mirror of
https://github.com/projectPiki/pikmin2.git
synced 2024-12-01 01:00:33 +00:00
A decompilation of Pikmin 2 (USA) brought to you by fans of the series.
.github/workflows | ||
asm | ||
include | ||
sha1 | ||
src | ||
tools | ||
unsorted_include_todo | ||
.clang-format | ||
.gitattributes | ||
.gitignore | ||
asmdiff.sh | ||
e_files.mk | ||
format-files.py | ||
genasm.sh | ||
genasmNoStrip.sh | ||
ldscript.lcf | ||
LICENSE.MD | ||
linker-map.txt | ||
Makefile | ||
obj_files.mk | ||
README.MD |
Pikmin 2
Pikmin 2 decompilation to C++/C
- INFORMATION! -
The ROM this repository builds can be shifted. You are able to add
and remove code as you see fit, for modding or research purposes.
It builds the following DOL:
pikmin2.usa.dol: sha1: 90d328bf8f190c90472e8c19e7e53c6ad0fe0d1a
Credits
- intns
- EpochFlame
- SodiumChlorideLogic
- GibHaltmannKill
- kiwi
- shibboleet
- wowjinxy
- nerduminer
- JHawk
- Minty-Meeo
- Revo
- ShadowLugia
- HeartPiece
- DroughtEnder
Building
Required Tools
- devkitPro
- gcc
Instructions
- WINDOWS ONLY STEP:
- Launch msys2(Provided by devkitPro) and run the command
pacman -S gcc
.
- Launch msys2(Provided by devkitPro) and run the command
- Download GC_WII_COMPILERS.zip from (https://cdn.discordapp.com/attachments/727918646525165659/917185027656286218/GC_WII_COMPILERS.zip) and extract the GC folder to tools/mwcc_compiler/.
- This folder should be made by the user.
- Run
make -j
in a command prompt or terminal.- -j Allows
make
to use multiple threads, speeding up the process.
- -j Allows
- OPTIONAL:
- Obtain a clean DOL of Pikmin 2 USA 1.0 and place it in the base working directory and rename it to
baserom.dol
. - To generate a linker map (takes a considerable amount of time), run
make MAPGENFLAG=1 -j
- Obtain a clean DOL of Pikmin 2 USA 1.0 and place it in the base working directory and rename it to
Generating Context for decomp.me Scratches
(NB: The generator requires Python 3 to run)
- Stand-alone decompilation packages and tools require information on the functions and structures of the project in order to parse extracted blocks correctly. The easiest way to do this is to pass the tool just the necessary 'context' for the file, i.e. a set of all the headers used by the file that's being worked on.
- A recursive context processing script is included in the repo (tools/decompctx.py), which generates a
ctx.c
file in the root directory.- The contents of this can then be copied and pasted into the 'Context' section of a decomp.me scratch or similar.
- To use, call the generator via the terminal/command line from the root directory (replacing DIRECTORY and FILE as required):
python3 tools/decompctx.py src/DIRECTORY/FILE.cpp
- Credit to encounter and the Metroid Prime decomp project for the script!
Project Organisation
- For each namespace that types and functions are contained within, create a folder. E.g. the structure
Game::GameSystem
will go in include/Game/GameSystem.h. - The exception is only when adding extra folders becomes useless, for example having to add multiple folders that are empty, you can instead opt for creating a header file with the namespace's definitions inside.
- The project is actively formatted using .clang-format, for a consistent code style.
Progress
DONE
- sysGCU
- sysGCU/appThread.cpp
- sysGCU/controller.cpp
- sysGCU/dvdErrorMessage.cpp
- sysGCU/dvdStatus.cpp
- sysGCU/fogMgr.cpp
- sysGCU/gameConfig.cpp
- sysGCU/menuSection.cpp
- sysGCU/message.cpp
- sysGCU/messageAnalyzer.cpp
- sysGCU/messageReference.cpp
- sysGCU/messageSequence.cpp
- sysGCU/modelMgr.cpp
- sysGCU/resourceMgr2D.cpp
- sysGCU/rootMenuSection.cpp
- sysGCU/simpleMessage.cpp
- sysGCU/THPDraw.c
- sysCommonU
- utilityU
- plugProjectKonoU
- plugProjectOgawaU
- plugProjectOgawaU/DispMemberBase.cpp
- plugProjectOgawaU/ogAngleMgr.cpp
- plugProjectOgawaU/ogCounter.cpp
- plugProjectOgawaU/ogLib2D.cpp
- plugProjectOgawaU/ogSceneAnaDemo.cpp
- plugProjectOgawaU/ogSceneCave.cpp
- plugProjectOgawaU/ogSceneChallengeBase.cpp
- plugProjectOgawaU/ogSceneKantei.cpp
- plugProjectOgawaU/ogSceneSMenuPauseVs.cpp
- plugProjectOgawaU/ogSceneSpecialItem.cpp
- plugProjectOgawaU/ogSceneVs.cpp
- plugProjectOgawaU/ogSceneWorldMapInfoWindow0.cpp
- plugProjectOgawaU/ogScreen.cpp
- plugProjectOgawaU/ogUtil.cpp
- plugProjectKandoU
- plugProjectKandoU/aiConstants.cpp
- plugProjectKandoU/baseGameSectionDraw.cpp
- plugProjectKandoU/baseHIOparms.cpp
- plugProjectKandoU/gameChallenge2D.cpp
- plugProjectKandoU/gameHighscore.cpp
- plugProjectKandoU/gameIconTexture.cpp
- plugProjectKandoU/gameSoundEvent.cpp
- plugProjectKandoU/gameStages.cpp
- plugProjectKandoU/interactBattle.cpp
- plugProjectKandoU/kandoLib.cpp
- plugProjectKandoU/objectTypes.cpp
- plugProjectKandoU/pelletCarry.cpp
- plugProjectKandoU/pelletConfig.cpp
- plugProjectKandoU/pikiAnimator.cpp
- plugProjectKandoU/pikiContainer.cpp
- plugProjectKandoU/sweepPrune.cpp
- plugProjectKandoU/vsCoinOtakaraName.cpp
- plugProjectKandoU/vsFifo.cpp
- plugProjectKandoU/vsTekiMgr.cpp
- plugProjectHikinoU
- plugProjectEbisawaU
- plugProjectMorimuraU
- plugProjectMorimuraU/blackManAnimator.cpp
- plugProjectMorimuraU/bombAnimator.cpp
- plugProjectMorimuraU/eggAnimator.cpp
- plugProjectMorimuraU/eggState.cpp
- plugProjectMorimuraU/enemyNest.cpp
- plugProjectMorimuraU/jigumoAnimator.cpp
- plugProjectMorimuraU/miulinAnimator.cpp
- plugProjectMorimuraU/panModokiAnimator.cpp
- plugProjectMorimuraU/plantsAnimator.cpp
- plugProjectMorimuraU/shijimiChouAnimator.cpp
- plugProjectMorimuraU/tamagoMushiAnimator.cpp
- plugProjectMorimuraU/testBase.cpp
- plugProjectMorimuraU/tyreAnimator.cpp
- plugProjectMorimuraU/umiMushiAnimator.cpp
- plugProjectNishimuraU
- plugProjectNishimuraU/ArmorAnimator.cpp
- plugProjectNishimuraU/BabyAnimator.cpp
- plugProjectNishimuraU/BigFootAnimator.cpp
- plugProjectNishimuraU/BombOtakara.cpp
- plugProjectNishimuraU/BombSaraiAnimator.cpp
- plugProjectNishimuraU/Catfish.cpp
- plugProjectNishimuraU/CatfishMgr.cpp
- plugProjectNishimuraU/DamagumoAnimator.cpp
- plugProjectNishimuraU/DoorNode.cpp
- plugProjectNishimuraU/ElecBugAnimator.cpp
- plugProjectNishimuraU/ElecHibaAnimator.cpp
- plugProjectNishimuraU/ElecOtakara.cpp
- plugProjectNishimuraU/EnemyUnit.cpp
- plugProjectNishimuraU/FireOtakara.cpp
- plugProjectNishimuraU/FixKabuto.cpp
- plugProjectNishimuraU/FixKabutoMgr.cpp
- plugProjectNishimuraU/FixMiniHoudai.cpp
- plugProjectNishimuraU/FrogAnimator.cpp
- plugProjectNishimuraU/FuefukiAnimator.cpp
- plugProjectNishimuraU/GasHibaAnimator.cpp
- plugProjectNishimuraU/GasHibaState.cpp
- plugProjectNishimuraU/GasOtakara.cpp
- plugProjectNishimuraU/GateUnit.cpp
- plugProjectNishimuraU/GreenKabuto.cpp
- plugProjectNishimuraU/GreenKabutoMgr.cpp
- plugProjectNishimuraU/HanachirashiAnimator.cpp
- plugProjectNishimuraU/HibaAnimator.cpp
- plugProjectNishimuraU/HibaState.cpp
- plugProjectNishimuraU/HoudaiAnimator.cpp
- plugProjectNishimuraU/ImomushiAnimator.cpp
- plugProjectNishimuraU/ItemUnit.cpp
- plugProjectNishimuraU/KabutoAnimator.cpp
- plugProjectNishimuraU/KoganeAnimator.cpp
- plugProjectNishimuraU/KumaChappyAnimator.cpp
- plugProjectNishimuraU/KumaKochappyAnimator.cpp
- plugProjectNishimuraU/KurageAnimator.cpp
- plugProjectNishimuraU/MapCreator.cpp
- plugProjectNishimuraU/MarAnimator.cpp
- plugProjectNishimuraU/MiniHoudaiAnimator.cpp
- plugProjectNishimuraU/NormMiniHoudai.cpp
- plugProjectNishimuraU/ObjectLayout.cpp
- plugProjectNishimuraU/OniKurageAnimator.cpp
- plugProjectNishimuraU/OtakaraBaseAnimator.cpp
- plugProjectNishimuraU/PomAnimator.cpp
- plugProjectNishimuraU/QueenAnimator.cpp
- plugProjectNishimuraU/QurioneAnimator.cpp
- plugProjectNishimuraU/RandCapEnemyUnit.cpp
- plugProjectNishimuraU/RandMapChecker.cpp
- plugProjectNishimuraU/RandMapDraw.cpp
- plugProjectNishimuraU/RandPlantUnit.cpp
- plugProjectNishimuraU/RedKabuto.cpp
- plugProjectNishimuraU/RedKabutoMgr.cpp
- plugProjectNishimuraU/RockAnimator.cpp
- plugProjectNishimuraU/RumbleData.cpp
- plugProjectNishimuraU/SaraiAnimator.cpp
- plugProjectNishimuraU/SnakeCrowAnimator.cpp
- plugProjectNishimuraU/SnakeWholeAnimator.cpp
- plugProjectNishimuraU/SokkuriAnimator.cpp
- plugProjectNishimuraU/TadpoleAnimator.cpp
- plugProjectNishimuraU/TankAnimator.cpp
- plugProjectNishimuraU/TobiAnimator.cpp
- plugProjectNishimuraU/UjiaAnimator.cpp
- plugProjectNishimuraU/UjibAnimator.cpp
- plugProjectNishimuraU/WaterOtakara.cpp
- plugProjectYamashitaU
- plugProjectYamashitaU/chappyAnimator.cpp
- plugProjectYamashitaU/enemyAnimatorBase.cpp
- plugProjectYamashitaU/enemyInfo.cpp
- plugProjectYamashitaU/enemyInteractActions.cpp
- plugProjectYamashitaU/enemyParmsBase.cpp
- plugProjectYamashitaU/enemyPelletInfo.cpp
- plugProjectYamashitaU/enemyStoenInfo.cpp
- plugProjectYamashitaU/kochappyAnimator.cpp
- plugProjectYamashitaU/pelplantGenerator.cpp
- plugProjectYamashitaU/timeMgr.cpp
- plugProjectYamashitaU/treasureLightMgr.cpp
- JSystem
- JSystem/data.cpp
- JSystem/J2D/J2DGrafContext.cpp
- JSystem/J2D/J2DManage.cpp
- JSystem/J2D/J2DOrthoGraph.cpp
- JSystem/J2D/J2DPerspGraph.cpp
- JSystem/J3D/J3DBinaryFormat.cpp
- JSystem/J3D/J3DModelSaver.cpp
- JSystem/J3D/J3DShapeDraw.cpp
- JSystem/J3D/J3DShapeTable.cpp
- JSystem/J3D/J3DUDL.cpp
- JSystem/J3D/J3DUShadow.cpp
- JSystem/JAD/JADHioNode.cpp
- JSystem/JAI/JAIConst.cpp
- JSystem/JAS/JASBank.cpp
- JSystem/JAS/JASInstEffect.cpp
- JSystem/JAS/JASWaveBank.cpp
- JSystem/JKR/JKRAramStream.cpp
- JSystem/JKR/JKRDisposer.cpp
- JSystem/JKR/JKRFile.cpp
- JSystem/JMath/random.cpp
- JSystem/JPA/JPAKeyBlock.cpp
- JSystem/JPA/JPATexture.cpp
- JSystem/JSG/JSGActor.cpp
- JSystem/JSG/JSGCamera.cpp
- JSystem/JSG/JSGObject.cpp
- JSystem/JSG/JSGSystem.cpp
- JSystem/JStudio/data/jstudio-data.cpp
- JSystem/JStudio/fvb/data/fvb-data-parse.cpp
- JSystem/JStudio/fvb/data/fvb-data.cpp
- JSystem/JStudio/stb/data/stb-data-parse.cpp
- JSystem/JStudio/stb/data/stb-data.cpp
- JSystem/JSupport/JSUFileStream.cpp
- JSystem/JSupport/JSUInputStream.cpp
- JSystem/JSupport/JSUList.cpp
- JSystem/JSupport/JSUMemoryStream.cpp
- JSystem/JSupport/JSUOutputStream.cpp
- JSystem/JUT/JUTFont.cpp
- JSystem/JUT/JUTFontData_Ascfont_fix12.cpp
- JSystem/JUT/JUTNameTab.cpp
- JSystem/JUT/JUTResFont.cpp
- JSystem/JUT/JUTRomFont.cpp
WIP
- sysBootupU
- sysGCU
- sysCommonU
- utilityU
- plugProjectKonoU
- plugProjectOgawaU
- plugProjectKandoU
- plugProjectHikinoU
- plugProjectEbisawaU
- plugProjectMorimuraU
- plugProjectNishimuraU
- plugProjectYamashitaU
- JSystem