From f6f7e8dc2c400460a560ab71a8bea13f37d8043f Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Thu, 4 Jul 2024 06:50:57 +0000 Subject: [PATCH 01/42] Update Dockerfile to latest Ubuntu LTS --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c0d33680..4f9692b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 as build +FROM ubuntu:24.04 as build # --- basic package installation --- RUN apt-get update && \ From 38dd02eeadcf0a1c167665a1594122df13cd02ee Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Thu, 4 Jul 2024 07:31:28 +0000 Subject: [PATCH 02/42] Add fixes for Ubuntu 24.04 in Dockerfile --- Dockerfile | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4f9692b0..0535d2bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,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 +24,26 @@ 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 +# 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 WSL 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 +# 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 --- From f7474d2ff9f05ec6ee44466047e15c3782f32c33 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Fri, 5 Jul 2024 03:59:20 +0000 Subject: [PATCH 03/42] a few quality of life updates to the dockerfile --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0535d2bc..3186b800 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,6 @@ RUN rm /usr/bin/cpp /usr/bin/g++ /lib/cpp 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. RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -name 'include' -type d -maxdepth 1 -exec rm -r "{}" \; From c52f83907fef6b72735aa506e87b77afc2efdf97 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:10:43 +0000 Subject: [PATCH 04/42] Clean up extraneous comments in dockerfile --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3186b800..4661476f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,12 +26,10 @@ RUN wget https://apt.devkitpro.org/install-devkitpro-pacman RUN chmod +x install-devkitpro-pacman # 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. 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++ /lib/cpp From c151492f7ce2ccb9295844e37455f0ea3475318f Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:11:58 +0000 Subject: [PATCH 05/42] Add compiler download & setup --- Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Dockerfile b/Dockerfile index 4661476f..2ebafc3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,12 @@ COPY ./tools/ppcdis/requirements.txt /temp/tools/ppcdis/requirements.txt RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp +# --- compiler download and setup --- +RUN wget https://files.decomp.dev/compilers_latest.zip +RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp +RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +RUN rm -r compilers_temp compilers_latest.zip + # --- wibo installation --- RUN wget https://github.com/decompals/wibo/releases/download/0.6.13/wibo RUN install ./wibo /usr/bin From 27668ab595c3b201f333d688996f020de0a832f3 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:21:34 +0000 Subject: [PATCH 06/42] Fix missing unzip install and fix compilers not going in the right folder --- Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2ebafc3c..36d152ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,9 @@ FROM ubuntu:24.04 as build +# --- set up work directory --- +RUN mkdir /ac-decomp +WORKDIR /ac-decomp + # --- basic package installation --- RUN apt-get update && \ apt-get install -y \ @@ -7,6 +11,7 @@ RUN apt-get update && \ ninja-build \ python3 \ python3-pip \ + unzip \ wget # --- python package installation --- @@ -19,7 +24,7 @@ RUN rm -rf /temp # --- compiler download and setup --- RUN wget https://files.decomp.dev/compilers_latest.zip RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp -RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +RUN mv compilers_temp/GC/1.2.5n/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2r/ /ac-decomp/tools/ RUN rm -r compilers_temp compilers_latest.zip # --- wibo installation --- @@ -49,9 +54,7 @@ RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -n # 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 --- -RUN mkdir /ac-decomp -WORKDIR /ac-decomp +# --- set up env vars --- ENV PATH="/ac-decomp/tools:${PATH}" ENV N64_SDK="/N64_SDK" ENV DEVKITPPC="/opt/devkitpro/devkitPPC" From a8c47cba590f93de7b4bc2f939071a3cb7bd44fc Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:41:47 +0000 Subject: [PATCH 07/42] Undo most of previous commit --- Dockerfile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 36d152ae..a14af6fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,5 @@ FROM ubuntu:24.04 as build -# --- set up work directory --- -RUN mkdir /ac-decomp -WORKDIR /ac-decomp - # --- basic package installation --- RUN apt-get update && \ apt-get install -y \ @@ -24,7 +20,7 @@ RUN rm -rf /temp # --- compiler download and setup --- RUN wget https://files.decomp.dev/compilers_latest.zip RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp -RUN mv compilers_temp/GC/1.2.5n/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2/ /ac-decomp/tools/ && mv compilers_temp/GC/1.3.2r/ /ac-decomp/tools/ +RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ RUN rm -r compilers_temp compilers_latest.zip # --- wibo installation --- @@ -54,7 +50,9 @@ RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -n # 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 env vars --- +# --- set up work directory and env vars --- +RUN mkdir /ac-decomp +WORKDIR /ac-decomp ENV PATH="/ac-decomp/tools:${PATH}" ENV N64_SDK="/N64_SDK" ENV DEVKITPPC="/opt/devkitpro/devkitPPC" From 97a29a89b735cee15daf013720fab9f3743f72c9 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 03:56:13 +0000 Subject: [PATCH 08/42] Revert compiler downloading for now --- Dockerfile | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index a14af6fd..4661476f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,6 @@ RUN apt-get update && \ ninja-build \ python3 \ python3-pip \ - unzip \ wget # --- python package installation --- @@ -17,12 +16,6 @@ COPY ./tools/ppcdis/requirements.txt /temp/tools/ppcdis/requirements.txt RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp -# --- compiler download and setup --- -RUN wget https://files.decomp.dev/compilers_latest.zip -RUN mkdir compilers_temp && unzip compilers_latest.zip -d compilers_temp -RUN mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ -RUN rm -r compilers_temp compilers_latest.zip - # --- wibo installation --- RUN wget https://github.com/decompals/wibo/releases/download/0.6.13/wibo RUN install ./wibo /usr/bin From 978aa21e02d8a24a349ba5d6b0d17200752bc103 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:09:57 +0000 Subject: [PATCH 09/42] Create build-docker.sh --- build-docker.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 build-docker.sh diff --git a/build-docker.sh b/build-docker.sh new file mode 100644 index 00000000..f4ee9cc8 --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,13 @@ +docker build -t ac-decomp . +if [ -e /bin/curl ]; then + curl -O https://files.decomp.dev/compilers_latest.zip +elif [ -e /bin/wget ]; 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 [ -e /bin/unzip ]; 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."; exit 1; fi +mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +echo "Docker image setup is now complete. You may proceed with the instructions." From 74e6e24589fb4570b1ffc6b68e49d2e84ba872f5 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:13:50 +0000 Subject: [PATCH 10/42] Create build-docker.bat --- build-docker.bat | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 build-docker.bat diff --git a/build-docker.bat b/build-docker.bat new file mode 100644 index 00000000..2df1ccf1 --- /dev/null +++ b/build-docker.bat @@ -0,0 +1,7 @@ +docker build -t ac-decomp . +curl -O https://files.decomp.dev/compilers_latest.zip +Expand-Archive -LiteralPath compilers_latest.zip -DestinationPath compilers_temp +move compilers_temp\GC\1.2.5n\ tools\ && mv compilers_temp\GC\1.3.2\ tools\ && mv compilers_temp\GC\1.3.2r\ tools\ +Remove-Item compilers_latest.zip +Remove-Item -Path compilers_temp\ -Recurse +echo "Docker image setup is now complete. You may proceed with the instructions." From 9db2f8d990dc2930553fdb12ce3000722d50739c Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:15:28 +0000 Subject: [PATCH 11/42] Update build-docker.sh --- build-docker.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index f4ee9cc8..0e3d8298 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -8,6 +8,13 @@ else exit 0 fi -mkdir compilers_temp && if [ -e /bin/unzip ]; 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."; exit 1; fi +mkdir compilers_temp +if [ -e /bin/unzip ]; 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." + exit 1 +fi mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ +rm -r compilers_temp compilers_latest.zip echo "Docker image setup is now complete. You may proceed with the instructions." From acd1982abdead01784190088fcfa576efcb2b6d2 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:19:35 +0000 Subject: [PATCH 12/42] Rename build-docker.bat to build-docker.ps1 --- build-docker.bat => build-docker.ps1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-docker.bat => build-docker.ps1 (100%) diff --git a/build-docker.bat b/build-docker.ps1 similarity index 100% rename from build-docker.bat rename to build-docker.ps1 From c97aed3ab1e9531c2500dd3c15dfd63c8272da93 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:20:29 +0000 Subject: [PATCH 13/42] Update README.MD --- README.MD | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.MD b/README.MD index 2c0ac959..8d738847 100644 --- a/README.MD +++ b/README.MD @@ -19,11 +19,10 @@ Use `--recursive` when cloning to have ppcdis in the repository. 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 Docker. -5. Build the Docker image (`docker build -t ac-decomp .`). -6. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). -7. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). +3. Install Docker. +4. Build the Docker image. If using MacOS or Linux, run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.ps1` 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 From c8e7d5377d65e5e46e60657b8372899a23f2fc7f Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:56:39 +0000 Subject: [PATCH 14/42] Update and rename build-docker.ps1 to build-docker.bat --- build-docker.bat | 15 +++++++++++++++ build-docker.ps1 | 7 ------- 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 build-docker.bat delete mode 100644 build-docker.ps1 diff --git a/build-docker.bat b/build-docker.bat new file mode 100644 index 00000000..72841f7e --- /dev/null +++ b/build-docker.bat @@ -0,0 +1,15 @@ +@echo off +echo "Please ensure Docker Desktop is running before you continue." +pause +docker build -t ac-decomp . +curl -O https://files.decomp.dev/compilers_latest.zip +mkdir compilers_temp +tar -xf compilers_latest.zip -C compilers_temp +xcopy compilers_temp\GC\1.2.5n\ tools\1.2.5n\ /E /I +xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I +xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I +del compilers_latest.zip +rmdir /S /Q compilers_temp\ +echo "Docker image setup is now complete. You may proceed with the instructions." +pause +exit diff --git a/build-docker.ps1 b/build-docker.ps1 deleted file mode 100644 index 2df1ccf1..00000000 --- a/build-docker.ps1 +++ /dev/null @@ -1,7 +0,0 @@ -docker build -t ac-decomp . -curl -O https://files.decomp.dev/compilers_latest.zip -Expand-Archive -LiteralPath compilers_latest.zip -DestinationPath compilers_temp -move compilers_temp\GC\1.2.5n\ tools\ && mv compilers_temp\GC\1.3.2\ tools\ && mv compilers_temp\GC\1.3.2r\ tools\ -Remove-Item compilers_latest.zip -Remove-Item -Path compilers_temp\ -Recurse -echo "Docker image setup is now complete. You may proceed with the instructions." From 17a86201c6350e76386936182ae22d1478d2e2c6 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 04:57:24 +0000 Subject: [PATCH 15/42] Update README.MD --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 8d738847..92eae8eb 100644 --- a/README.MD +++ b/README.MD @@ -20,7 +20,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. 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. Build the Docker image. If using MacOS or Linux, run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.ps1` file. +4. Build the Docker image. If using MacOS or Linux (including WSL), run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.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`). From 98d1884cffcd423b93cb9e21d85dbb934f522046 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:03:10 +0000 Subject: [PATCH 16/42] Add notifier to make sure user has Docker --- build-docker.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build-docker.sh b/build-docker.sh index 0e3d8298..4d01dc82 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,3 +1,5 @@ +echo "Ensure Docker has been properly installed before continuing." +read -p "Press enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then curl -O https://files.decomp.dev/compilers_latest.zip From da21463aac05ed6eefd1596e7c85c74b3c619003 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:03:38 +0000 Subject: [PATCH 17/42] Make messaging more consistent --- build-docker.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.bat b/build-docker.bat index 72841f7e..b752d425 100644 --- a/build-docker.bat +++ b/build-docker.bat @@ -1,5 +1,5 @@ @echo off -echo "Please ensure Docker Desktop is running before you continue." +echo "Please ensure Docker Desktop is running before continuing." pause docker build -t ac-decomp . curl -O https://files.decomp.dev/compilers_latest.zip From 544e49b52412ad10056778e24058e56a9cdd0ab8 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:04:04 +0000 Subject: [PATCH 18/42] Make messaging more consistent --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 4d01dc82..503350ad 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,4 +1,4 @@ -echo "Ensure Docker has been properly installed before continuing." +echo "Please ensure Docker has been properly installed before continuing." read -p "Press enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then From c7554be7cdebf01cba13f35fcf300462781f9c15 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:04:21 +0000 Subject: [PATCH 19/42] Update build-docker.sh --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 503350ad..872eb728 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,5 +1,5 @@ echo "Please ensure Docker has been properly installed before continuing." -read -p "Press enter to continue or CTRL-C to exit." +read -p "Press Enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then curl -O https://files.decomp.dev/compilers_latest.zip From 67b717649a9637fd939906ac824321f8884027c9 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:04:43 +0000 Subject: [PATCH 20/42] Update build-docker.sh --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 872eb728..c99ea0a0 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -1,4 +1,4 @@ -echo "Please ensure Docker has been properly installed before continuing." +echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." docker build -t ac-decomp . if [ -e /bin/curl ]; then From 36d2f9a8fd459d5a5e34cf2669df3393afde2f01 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:06:02 +0000 Subject: [PATCH 21/42] Update build-docker.sh --- build-docker.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build-docker.sh b/build-docker.sh index c99ea0a0..4ed73dc4 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -15,6 +15,8 @@ if [ -e /bin/unzip ]; 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 compilers_latest.zip + rm -r compilers_temp exit 1 fi mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ From 005bb9c13d9263617ea66d0d3dc24bc47eac5ed1 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:09:18 +0000 Subject: [PATCH 22/42] Update README.MD --- README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 92eae8eb..bc42ff02 100644 --- a/README.MD +++ b/README.MD @@ -7,6 +7,7 @@ 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. @@ -26,7 +27,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ### 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. +> ℹ️ When building manually from a work directory previously used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. 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/*. From 407de26eeefe8b8536e684b0d27b4d1bdd48829d Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:13:03 +0000 Subject: [PATCH 23/42] Make Windows disclaimer more detailed --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index bc42ff02..4ffbe3af 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, it's recommended to use WSL. +> ℹ️ The build is known to run disproportionately slow on Windows, so we recommend using WSL for both build methods when using Windows. ### Docker From d786d614f26c11f22ebdb16dd60ceacbe9b40e68 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:14:16 +0000 Subject: [PATCH 24/42] Make messaging less redundant --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 4ffbe3af..2ff5abd6 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ The build is known to run disproportionately slow on Windows, so we recommend using WSL for both build methods when using Windows. +> ℹ️ When using Windows, the build is known to run disproportionately slow when run natively, so we recommend using WSL. ### Docker From 079f8dce91b1f3927c3b4cbee3676793c79c4b57 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:15:26 +0000 Subject: [PATCH 25/42] Fix typo --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 2ff5abd6..de6f0773 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, the build is known to run disproportionately slow when run natively, so we recommend using WSL. +> ℹ️ When using Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. ### Docker From 7485a409e04f2b034448560fc757cf9eb08e74ca Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:15:51 +0000 Subject: [PATCH 26/42] Fix redundancy --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index de6f0773..27a6b2cd 100644 --- a/README.MD +++ b/README.MD @@ -14,7 +14,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. +> ℹ️ On Windows, the build is known to run disproportionately slow when ran natively, so we recommend using WSL. ### Docker From bf4a53bc3434372da0c6c066bb6918466ce92234 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:18:49 +0000 Subject: [PATCH 27/42] Update README.MD --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 27a6b2cd..f4db1dd1 100644 --- a/README.MD +++ b/README.MD @@ -36,7 +36,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. 5. Install Python modules from requirements.txt (`pip install -r requirements.txt`). 6. Install version 0.6.13 of [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 [version 0.6.13 GitHub release](https://github.com/decompals/wibo/releases/tag/0.6.13) and run `install ./wibo /usr/bin` to install it to your system. + - Download the [GitHub release of version 0.6.13](https://github.com/decompals/wibo/releases/tag/0.6.13) and run `install ./wibo /usr/bin` to install it to your system. 7. Install devkitPPC. - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. From 26a35d580f062dc4d41a584711dd846353c20c34 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:21:43 +0000 Subject: [PATCH 28/42] Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4661476f..fbe6b183 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,7 @@ RUN chmod +x install-devkitpro-pacman RUN sed -i 's/^apt-get.*$/& -y/g' install-devkitpro-pacman 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 RUN dkp-pacman -S devkitPPC --noconfirm # dear fucking god this is hacky but it works (needed otherwise next step fails) From 2ea8e32049f44b6444201167e2ac81febdf2911d Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:26:13 +0000 Subject: [PATCH 29/42] Rename build-docker.bat to docker-setup.bat --- build-docker.bat => docker-setup.bat | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-docker.bat => docker-setup.bat (100%) diff --git a/build-docker.bat b/docker-setup.bat similarity index 100% rename from build-docker.bat rename to docker-setup.bat From f006b89fb5961b699f205db3d6e7ef686f8638e1 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:26:26 +0000 Subject: [PATCH 30/42] Rename build-docker.sh to docker-setup.sh --- build-docker.sh => docker-setup.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-docker.sh => docker-setup.sh (100%) diff --git a/build-docker.sh b/docker-setup.sh similarity index 100% rename from build-docker.sh rename to docker-setup.sh From fc8522cb445b97dacc3fa6c9515d2ad40ad68fe0 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:26:57 +0000 Subject: [PATCH 31/42] Make messaging less confusing --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index f4db1dd1..299986bf 100644 --- a/README.MD +++ b/README.MD @@ -21,7 +21,7 @@ Use `--recursive` when cloning to have ppcdis in the repository. 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. Build the Docker image. If using MacOS or Linux (including WSL), run `chmod +x build-docker.sh && ./build-docker.sh`. If using Windows, run the `build-docker.bat` file. +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`). From 014a0af0a1fa8597c3792e1b0a19a91c3b9c75cc Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:34:19 +0000 Subject: [PATCH 32/42] Rearrange docker command --- docker-setup.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-setup.bat b/docker-setup.bat index b752d425..e4c09736 100644 --- a/docker-setup.bat +++ b/docker-setup.bat @@ -1,7 +1,6 @@ @echo off echo "Please ensure Docker Desktop is running before continuing." pause -docker build -t ac-decomp . curl -O https://files.decomp.dev/compilers_latest.zip mkdir compilers_temp tar -xf compilers_latest.zip -C compilers_temp @@ -10,6 +9,7 @@ xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I del compilers_latest.zip rmdir /S /Q compilers_temp\ +docker build -t ac-decomp . echo "Docker image setup is now complete. You may proceed with the instructions." pause exit From 1874c92f56d843fe67c904ce09a81c992835f9f8 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:34:54 +0000 Subject: [PATCH 33/42] Rearrange docker command --- docker-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-setup.sh b/docker-setup.sh index 4ed73dc4..8acf7a8b 100644 --- a/docker-setup.sh +++ b/docker-setup.sh @@ -1,6 +1,5 @@ echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." -docker build -t ac-decomp . if [ -e /bin/curl ]; then curl -O https://files.decomp.dev/compilers_latest.zip elif [ -e /bin/wget ]; then @@ -21,4 +20,5 @@ else fi mv compilers_temp/GC/1.2.5n/ tools/ && mv compilers_temp/GC/1.3.2/ tools/ && mv compilers_temp/GC/1.3.2r/ tools/ 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." From 62a22b242a1fe05828c88fad657d2caca4dc1537 Mon Sep 17 00:00:00 2001 From: MisterSheeple <27652712+MisterSheeple@users.noreply.github.com> Date: Mon, 5 Aug 2024 05:45:05 +0000 Subject: [PATCH 34/42] Improve existence checks --- docker-setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-setup.sh b/docker-setup.sh index 8acf7a8b..65453b80 100644 --- a/docker-setup.sh +++ b/docker-setup.sh @@ -1,8 +1,8 @@ echo "Please ensure Docker is installed before continuing." read -p "Press Enter to continue or CTRL-C to exit." -if [ -e /bin/curl ]; then +if command -v curl &> /dev/null; then curl -O https://files.decomp.dev/compilers_latest.zip -elif [ -e /bin/wget ]; then +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." @@ -10,7 +10,7 @@ else fi mkdir compilers_temp -if [ -e /bin/unzip ]; then +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." From e9bba0543e2755e9ddfed7bbe36a88d8e8bb6ceb Mon Sep 17 00:00:00 2001 From: Weaky322 Date: Mon, 5 Aug 2024 01:41:14 -0600 Subject: [PATCH 35/42] Link ef_hanabi_dummy.c --- config/rel_slices.yml | 1356 +++++++++++++++++++++-------------------- src/ef_hanabi_dummy.c | 62 +- 2 files changed, 737 insertions(+), 681 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index d94b0444..e87f554a 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1123,6 +1123,10 @@ ef_footprint.c: .text: [0x8060BCB0, 0x8060C21C] .rodata: [0x8064C0B0, 0x8064C0E0] .data: [0x806D2430, 0x806D2470] +ef_hanabi_dummy.c: + .text: [0x8060E6D8, 0x8060E9B8] + .rodata: [0x8064C2A0, 0x8064C2C0] + .data: [0x806D2858, 0x806D2888] ef_killer.c: .text: [0x80614178, 0x8061481C] .rodata: [0x8064C680, 0x8064C6C0] @@ -1196,701 +1200,45 @@ ac_weather_fine.c: # dataobject.obj NPC draw data TUs data/npc/model/mdl/bev_1.c: - .data: [0x806E03A0, 0x806E27D0] + .data: [0x806E03A0, 0x806E27D0] data/npc/model/tex/bev_1.c: - .data: [0x806E27E0, 0x806E3500] + .data: [0x806E27E0, 0x806E3500] data/npc/model/mdl/ant_1.c: - .data: [0x806E3838, 0x806E5910] + .data: [0x806E3838, 0x806E5910] data/npc/model/tex/ant_1.c: - .data: [0x806E5920, 0x806E6640] + .data: [0x806E5920, 0x806E6640] data/npc/model/tex/ant_2.c: - .data: [0x806E6640, 0x806E7360] + .data: [0x806E6640, 0x806E7360] data/npc/model/tex/ant_3.c: - .data: [0x806E7360, 0x806E8080] + .data: [0x806E7360, 0x806E8080] data/npc/model/tex/ant_4.c: - .data: [0x806E8080, 0x806E8DA0] + .data: [0x806E8080, 0x806E8DA0] data/npc/model/tex/ant_5.c: - .data: [0x806E8DA0, 0x806E9AC0] + .data: [0x806E8DA0, 0x806E9AC0] data/npc/model/mdl/wls_1.c: - .data: [0x806E9AC0, 0x806EBFF0] + .data: [0x806E9AC0, 0x806EBFF0] data/npc/model/tex/wls_1.c: - .data: [0x806EC000, 0x806ECFA0] + .data: [0x806EC000, 0x806ECFA0] data/npc/model/mdl/bea_1.c: - .data: [0x806EF078, 0x806F1030] + .data: [0x806EF078, 0x806F1030] data/npc/model/tex/bea_1.c: - .data: [0x806F1040, 0x806F2260] + .data: [0x806F1040, 0x806F2260] data/npc/model/tex/bea_2.c: - .data: [0x806F2260, 0x806F3480] + .data: [0x806F2260, 0x806F3480] data/npc/model/tex/bea_3.c: - .data: [0x806F3480, 0x806F46A0] + .data: [0x806F3480, 0x806F46A0] data/npc/model/tex/bea_5.c: - .data: [0x806F46A0, 0x806F58C0] + .data: [0x806F46A0, 0x806F58C0] data/npc/model/tex/bea_6.c: - .data: [0x806F58C0, 0x806F6AE0] + .data: [0x806F58C0, 0x806F6AE0] data/npc/model/tex/bea_7.c: - .data: [0x806F6AE0, 0x806F7D00] + .data: [0x806F6AE0, 0x806F7D00] data/npc/model/tex/bea_8.c: - .data: [0x806F7D00, 0x806F8F20] + .data: [0x806F7D00, 0x806F8F20] data/npc/model/tex/bea_9.c: - .data: [0x806F8F20, 0x806FA140] + .data: [0x806F8F20, 0x806FA140] data/npc/model/tex/bea_10.c: - .data: [0x806FA140, 0x806FB360] -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/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/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/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/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/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/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/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/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/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/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/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/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/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: [0x806FA140, 0x806FB360] # dataobject.obj files @@ -1898,12 +1246,456 @@ 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/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/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/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/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/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/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/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: @@ -1912,6 +1704,196 @@ 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/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/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/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: @@ -1922,6 +1904,28 @@ 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/bush_pal.c: diff --git a/src/ef_hanabi_dummy.c b/src/ef_hanabi_dummy.c index aefed319..37cd70fe 100644 --- a/src/ef_hanabi_dummy.c +++ b/src/ef_hanabi_dummy.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + 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 +20,67 @@ 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 = 0x50; + effect->effect_specific[0] = RANDOM(6); } static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + rgba_t light_color; + s16 frames_passed = 80 - effect->timer; + + if (frames_passed == 10) { + static rgba_t dummy_light[] = { + { 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[effect->effect_specific[0]], effect->position, game, 2.0f, 0.0f, 480.0f); + if (effect->arg0 != 0) { + light_color.r = light_color.r * 2.0f; + light_color.g = light_color.g * 2.0f; + light_color.b = light_color.b * 2.0f; + } + + 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 (effect->effect_specific[0]) { + case 0: + case 1: + sfx_no = 0x210F; + break; + case 2: + sfx_no = 0x2110; + break; + case 3: + case 4: + sfx_no = 0x2111; + break; + case 5: + sfx_no = 0x2112; + break; + default: + sfx_no = 0x210F; + break; + } + + sAdo_OngenTrgStart(sfx_no, &pos); + } } static void eHanabiDummy_dw(eEC_Effect_c* effect, GAME* game) { - // TODO -} + // empty +} \ No newline at end of file From e8ffa5eac8a034845741e18a51e83e355498a521 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 07:14:18 -0400 Subject: [PATCH 36/42] Implement & link ef_break_axe, ef_hanabi_dummy improvements --- config/rel_slices.yml | 4 + include/audio_defs.h | 9 ++- src/ef_break_axe.c | 176 +++++++++++++++++++++++++++++++++++++++++- src/ef_hanabi_dummy.c | 80 +++++++++++-------- 4 files changed, 231 insertions(+), 38 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index e87f554a..2cd5a06e 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1083,6 +1083,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] diff --git a/include/audio_defs.h b/include/audio_defs.h index 6bb37d99..26ff6e9e 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) @@ -83,6 +84,10 @@ typedef enum audio_sound_effects { NA_SE_ROD_STROKE = 0x109, NA_SE_ROD_BACK, + 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_WEAR = 0x11C, 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_hanabi_dummy.c b/src/ef_hanabi_dummy.c index 37cd70fe..acc51cc2 100644 --- a/src/ef_hanabi_dummy.c +++ b/src/ef_hanabi_dummy.c @@ -2,6 +2,24 @@ #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); @@ -24,63 +42,61 @@ static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 it } static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - effect->timer = 0x50; - effect->effect_specific[0] = RANDOM(6); + effect->timer = eHanabiDummy_TIMER; + eHanabiDummy_TYPE_ARG = RANDOM(eHanabiDummy_TYPE_NUM); } static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game) { rgba_t light_color; - s16 frames_passed = 80 - effect->timer; - + s16 frames_passed = eHanabiDummy_TIMER - effect->timer; + if (frames_passed == 10) { - static rgba_t dummy_light[] = { - { 50, 30, 20, 255 }, - { 20, 60, 20, 255 }, - { 40, 10, 60, 255 }, - { 40, 20, 20, 255 }, - { 20, 40, 20, 255 }, - { 60, 60, 30, 255 }, + 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[effect->effect_specific[0]], effect->position, game, 2.0f, 0.0f, 480.0f); + + 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 * 2.0f; - light_color.g = light_color.g * 2.0f; - light_color.b = light_color.b * 2.0f; + 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 (effect->effect_specific[0]) { - case 0: - case 1: - sfx_no = 0x210F; + + switch (eHanabiDummy_TYPE_ARG) { + case eHanabiDummy_TYPE0: + case eHanabiDummy_TYPE1: + sfx_no = NA_SE_HANABI0; break; - case 2: - sfx_no = 0x2110; + case eHanabiDummy_TYPE2: + sfx_no = NA_SE_HANABI1; break; - case 3: - case 4: - sfx_no = 0x2111; + case eHanabiDummy_TYPE3: + case eHanabiDummy_TYPE4: + sfx_no = NA_SE_HANABI2; break; - case 5: - sfx_no = 0x2112; + case eHanabiDummy_TYPE5: + sfx_no = NA_SE_HANABI3; break; default: - sfx_no = 0x210F; + sfx_no = NA_SE_HANABI0; break; } - + sAdo_OngenTrgStart(sfx_no, &pos); } } static void eHanabiDummy_dw(eEC_Effect_c* effect, GAME* game) { // empty -} \ No newline at end of file +} From c240aa9fcd5b52a7f59a47558351d378f8fb7c10 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 08:28:47 -0400 Subject: [PATCH 37/42] Implement & link ef_dash_asimoto --- config/rel_slices.yml | 4 + src/ef_dash_asimoto.c | 170 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 169 insertions(+), 5 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 2cd5a06e..7c1caddf 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1119,6 +1119,10 @@ 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_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] 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 } From e2a3c507468b3fbb24c59c206108bffdb10e6493 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:23:41 -0400 Subject: [PATCH 38/42] Implement & link ef_dig_hole --- config/rel_slices.yml | 4 + src/ef_dig_hole.c | 171 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 171 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 7c1caddf..605db290 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1123,6 +1123,10 @@ 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_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] 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); } From 044c719997d1f4f1723988330cfcf754f564c8d2 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 12:29:53 -0400 Subject: [PATCH 39/42] Implement & link ef_dig_mud --- config/rel_slices.yml | 4 ++ src/ef_dig_mud.c | 142 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 142 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 605db290..31387508 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1127,6 +1127,10 @@ 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_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] 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); } From 848df6ec2a094416f81182658c718b9b36089442 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Mon, 5 Aug 2024 22:31:46 -0400 Subject: [PATCH 40/42] Implement & link ef_dig_scoop --- config/rel_slices.yml | 4 ++ src/ef_dig_scoop.c | 155 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 155 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 31387508..1d419a83 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1131,6 +1131,10 @@ 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_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] 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 } From 5c45af9a3cea1a365a5d7fb1ad6b9e90d813269e Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 6 Aug 2024 04:40:29 -0400 Subject: [PATCH 41/42] Implement & link ef_douzou_light --- config/rel_slices.yml | 4 ++++ src/ef_douzou_light.c | 56 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 1d419a83..f3f35c44 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1135,6 +1135,10 @@ 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_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] 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); } From 2a7ef503d48228660e7c6da5b2d6742045ceaaf9 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Tue, 6 Aug 2024 07:22:32 -0400 Subject: [PATCH 42/42] Implement & link ef_doyon --- config/rel_slices.yml | 4 +++ include/audio_defs.h | 2 ++ src/ef_doyon.c | 60 ++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/config/rel_slices.yml b/config/rel_slices.yml index f3f35c44..5e68c7bf 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -1139,6 +1139,10 @@ 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] diff --git a/include/audio_defs.h b/include/audio_defs.h index 26ff6e9e..eb3399ed 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -100,6 +100,8 @@ typedef enum audio_sound_effects { NA_SE_TREE_TOUCH = 0x134, NA_SE_TREE_YURASU, + NA_SE_DOYON = 0x13F, + NA_SE_KIRIBASU_SCOOP = 0x148, NA_SE_KIRIBASU_OUT, 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); }