├── .gitattributes ├── .gitignore ├── README.md ├── en-gb ├── en-gb.cpp ├── en-gb.rc ├── en-gb.vcxproj ├── en-gb.vcxproj.filters ├── en-gb.vcxproj.user ├── framework.h ├── pch.cpp └── pch.h ├── lkg ├── 2014-12-26 │ ├── ColorScale.cpp │ ├── ColorScale.h │ ├── Default.h │ ├── DescTree.cpp │ ├── DescTree.h │ ├── Game │ │ ├── ColorScale.cpp │ │ ├── ColorScale.h │ │ ├── Default.h │ │ ├── DescTree.cpp │ │ ├── DescTree.h │ │ ├── GameClass.cpp │ │ ├── GameClass.h │ │ ├── GameDef.h │ │ ├── GameLoad.cpp │ │ ├── GameLoad.h │ │ ├── Game_MVC2_D.cpp │ │ ├── Game_MVC2_D.h │ │ ├── Game_MVC2_P.cpp │ │ ├── Game_MVC2_P.h │ │ ├── Game_MVC_A.cpp │ │ ├── Game_MVC_A.h │ │ ├── Game_SFA3_A.cpp │ │ ├── Game_SFA3_A.h │ │ ├── Game_SFIII3_A.cpp │ │ ├── Game_SFIII3_A.cppbak.cc │ │ ├── Game_SFIII3_A.cppbakup.cc │ │ ├── Game_SFIII3_A.h │ │ ├── Game_SFIII3_D.cpp │ │ ├── Game_SFIII3_D.h │ │ ├── Game_SSF2T_A.cpp │ │ ├── Game_SSF2T_A.h │ │ ├── Game_XMVSF_A.cpp │ │ ├── Game_XMVSF_A.h │ │ ├── ImgTicket.h │ │ ├── MVC2_D_Def.h │ │ ├── MVC2_PALSEL.cpp │ │ ├── MVC2_SUPP.cpp │ │ ├── MVC_A_DEF.h │ │ ├── PalGroup.cpp │ │ ├── PalGroup.h │ │ ├── SFA3_A_DEF.h │ │ ├── SFIII3_A_DEF.h │ │ ├── SFIII3_D_DEF.h │ │ ├── SSF2T_A_DEF.h │ │ ├── ShellSort.cpp │ │ ├── ShellSort.h │ │ ├── XMVSF_A_DEF.h │ │ └── mvc2_supp.h │ ├── GameClass.cpp │ ├── GameClass.h │ ├── GameDef.h │ ├── GameLoad.cpp │ ├── GameLoad.h │ ├── Game_MVC2_D.cpp │ ├── Game_MVC2_D.h │ ├── Game_MVC2_P.cpp │ ├── Game_MVC2_P.h │ ├── Game_MVC_A.cpp │ ├── Game_MVC_A.h │ ├── Game_SFA3_A.cpp │ ├── Game_SFA3_A.h │ ├── Game_SFIII3_A.cpp │ ├── Game_SFIII3_A.cppbak.cc │ ├── Game_SFIII3_A.cppbakup.cc │ ├── Game_SFIII3_A.h │ ├── Game_SFIII3_A_EXTRA.cpp │ ├── Game_SFIII3_D.cpp │ ├── Game_SFIII3_D.h │ ├── Game_SSF2T_A.cpp │ ├── Game_SSF2T_A.h │ ├── Game_XMVSF_A.cpp │ ├── Game_XMVSF_A.h │ ├── ImgDat.cpp │ ├── ImgDat.h │ ├── ImgDisp.cpp │ ├── ImgDisp.h │ ├── ImgDumpBmp.cpp │ ├── ImgDumpBmp.h │ ├── ImgOutDlg.cpp │ ├── ImgOutDlg.h │ ├── ImgTicket.h │ ├── Junk.cpp │ ├── Junk.h │ ├── JunkC.h │ ├── MVC2_D_Def.h │ ├── MVC2_PALSEL.cpp │ ├── MVC2_SUPP.cpp │ ├── MVC_A_DEF.h │ ├── Notes.txt │ ├── PalGroup.cpp │ ├── PalGroup.h │ ├── PalMod.aps │ ├── PalMod.cpp │ ├── PalMod.h │ ├── PalMod.rc │ ├── PalMod.vcproj │ ├── PalMod.vcproj.KAZUYA-1E4C792D.Tatsu.user │ ├── PalModDlg.cpp │ ├── PalModDlg.h │ ├── PalModDlg_Color.cpp │ ├── PalModDlg_Config.cpp │ ├── PalModDlg_Debug.cpp │ ├── PalModDlg_Edit.cpp │ ├── PalModDlg_File.cpp │ ├── PalModDlg_General.cpp │ ├── PalModDlg_Menu.cpp │ ├── PalTool.cpp │ ├── PalTool.h │ ├── PreviewDlg.cpp │ ├── PreviewDlg.h │ ├── RegProc.cpp │ ├── RegProc.h │ ├── SFA3_A_DEF.h │ ├── SFIII3_A_DEF.h │ ├── SFIII3_D_DEF.h │ ├── SSF2T_A_DEF.h │ ├── SettDlg.cpp │ ├── SettDlg.h │ ├── ShellSort.cpp │ ├── ShellSort.h │ ├── UndoRedo.cpp │ ├── UndoRedo.h │ ├── XMVSF_A_DEF.h │ ├── mvc2_supp.h │ ├── newgamedummy │ │ ├── Game_MVC_A.cpp │ │ ├── Game_MVC_A.h │ │ └── MVC_A_DEF.h │ ├── res │ │ ├── PalMod.ico │ │ └── PalMod.rc2 │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h ├── gitversion │ ├── ColorScale.cpp │ ├── ColorScale.h │ ├── Debug │ │ ├── PalMod.exe.embed.manifest │ │ ├── PalMod.exe.embed.manifest.res │ │ ├── PalMod.ilk │ │ ├── PalMod.log │ │ ├── PalMod.pdb │ │ ├── PalMod.res │ │ ├── PalMod.tlog │ │ │ ├── CL.command.1.tlog │ │ │ ├── CL.read.1.tlog │ │ │ ├── CL.write.1.tlog │ │ │ ├── PalMod.lastbuildstate │ │ │ ├── link.command.1.tlog │ │ │ ├── link.read.1.tlog │ │ │ ├── link.write.1.tlog │ │ │ ├── rc.command.1.tlog │ │ │ ├── rc.read.1.tlog │ │ │ └── rc.write.1.tlog │ │ ├── PalMod_manifest.rc │ │ ├── vc142.idb │ │ └── vc142.pdb │ ├── Default.h │ ├── DescTree.cpp │ ├── DescTree.h │ ├── Game │ │ ├── ColorScale.cpp │ │ ├── ColorScale.h │ │ ├── Default.h │ │ ├── DescTree.cpp │ │ ├── DescTree.h │ │ ├── GameClass.cpp │ │ ├── GameClass.h │ │ ├── GameDef.h │ │ ├── GameLoad.cpp │ │ ├── GameLoad.h │ │ ├── Game_MVC2_D.cpp │ │ ├── Game_MVC2_D.h │ │ ├── Game_MVC2_P.cpp │ │ ├── Game_MVC2_P.h │ │ ├── Game_MVC_A.cpp │ │ ├── Game_MVC_A.h │ │ ├── Game_SFA3_A.cpp │ │ ├── Game_SFA3_A.h │ │ ├── Game_SFIII3_A.cpp │ │ ├── Game_SFIII3_A.cppbak.cc │ │ ├── Game_SFIII3_A.cppbakup.cc │ │ ├── Game_SFIII3_A.h │ │ ├── Game_SFIII3_D.cpp │ │ ├── Game_SFIII3_D.h │ │ ├── Game_SSF2T_A.cpp │ │ ├── Game_SSF2T_A.h │ │ ├── Game_XMVSF_A.cpp │ │ ├── Game_XMVSF_A.h │ │ ├── ImgTicket.h │ │ ├── MVC2_D_Def.h │ │ ├── MVC2_PALSEL.cpp │ │ ├── MVC2_SUPP.cpp │ │ ├── MVC_A_DEF.h │ │ ├── PalGroup.cpp │ │ ├── PalGroup.h │ │ ├── SFA3_A_DEF.h │ │ ├── SFIII3_A_DEF.h │ │ ├── SFIII3_D_DEF.h │ │ ├── SSF2T_A_DEF.h │ │ ├── ShellSort.cpp │ │ ├── ShellSort.h │ │ ├── XMVSF_A_DEF.h │ │ └── mvc2_supp.h │ ├── GameClass.cpp │ ├── GameClass.h │ ├── GameDef.h │ ├── GameLoad.cpp │ ├── GameLoad.h │ ├── Game_MVC2_D.cpp │ ├── Game_MVC2_D.h │ ├── Game_MVC2_P.cpp │ ├── Game_MVC2_P.h │ ├── Game_MVC_A.cpp │ ├── Game_MVC_A.h │ ├── Game_SFA3_A.cpp │ ├── Game_SFA3_A.h │ ├── Game_SFIII3_A.cpp │ ├── Game_SFIII3_A.cppbak.cc │ ├── Game_SFIII3_A.cppbakup.cc │ ├── Game_SFIII3_A.h │ ├── Game_SFIII3_A_EXTRA.cpp │ ├── Game_SFIII3_D.cpp │ ├── Game_SFIII3_D.h │ ├── Game_SSF2T_A.cpp │ ├── Game_SSF2T_A.h │ ├── Game_XMVSF_A.cpp │ ├── Game_XMVSF_A.h │ ├── ImgDat.cpp │ ├── ImgDat.h │ ├── ImgDisp.cpp │ ├── ImgDisp.h │ ├── ImgDumpBmp.cpp │ ├── ImgDumpBmp.h │ ├── ImgOutDlg.cpp │ ├── ImgOutDlg.h │ ├── ImgTicket.h │ ├── Junk.cpp │ ├── Junk.h │ ├── JunkC.h │ ├── MVC2_D_Def.h │ ├── MVC2_PALSEL.cpp │ ├── MVC2_SUPP.cpp │ ├── MVC_A_DEF.h │ ├── Notes.txt │ ├── PalGroup.cpp │ ├── PalGroup.h │ ├── PalMod.aps │ ├── PalMod.cpp │ ├── PalMod.h │ ├── PalMod.rc │ ├── PalMod.vcproj │ ├── PalMod.vcproj.KAZUYA-1E4C792D.Tatsu.user │ ├── PalMod.vcxproj │ ├── PalMod.vcxproj.filters │ ├── PalMod.vcxproj.user │ ├── PalModDlg.cpp │ ├── PalModDlg.h │ ├── PalModDlg_Color.cpp │ ├── PalModDlg_Config.cpp │ ├── PalModDlg_Debug.cpp │ ├── PalModDlg_Edit.cpp │ ├── PalModDlg_File.cpp │ ├── PalModDlg_General.cpp │ ├── PalModDlg_Menu.cpp │ ├── PalTool.cpp │ ├── PalTool.h │ ├── PreviewDlg.cpp │ ├── PreviewDlg.h │ ├── RegProc.cpp │ ├── RegProc.h │ ├── SFA3_A_DEF.h │ ├── SFIII3_A_DEF.h │ ├── SFIII3_D_DEF.h │ ├── SSF2T_A_DEF.h │ ├── SettDlg.cpp │ ├── SettDlg.h │ ├── ShellSort.cpp │ ├── ShellSort.h │ ├── UndoRedo.cpp │ ├── UndoRedo.h │ ├── UpgradeLog.htm │ ├── XMVSF_A_DEF.h │ ├── mvc2_supp.h │ ├── newgamedummy │ │ ├── Game_MVC_A.cpp │ │ ├── Game_MVC_A.h │ │ └── MVC_A_DEF.h │ ├── palmod │ │ ├── palmod │ │ │ └── res │ │ │ │ └── palmod_.manifest │ │ └── res │ │ │ └── palmod_.manifest │ ├── res │ │ ├── PalMod.ico │ │ └── PalMod.rc2 │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h └── palmod │ └── res │ └── palmod_.manifest └── palmod ├── ACTfiles.cpp ├── BMPfiles.cpp ├── CFPLfiles.cpp ├── CRC32.cpp ├── CRC32.h ├── ColorSystem.cpp ├── ColorSystem.h ├── Debug ├── PalMod.exe.recipe └── bgbmp.bmp ├── ExtraFile.cpp ├── ExtraFile.h ├── GIFfiles.cpp ├── GPLfiles.cpp ├── Game ├── AOF1_A_DEF.h ├── AOF3_A_DEF.h ├── AoDK_A_DEF.h ├── AquaPlus_P_DEF.h ├── AsuraBuster_A_DIR_DEF.h ├── AvgrsGS_A_DIR_DEF.h ├── BASARA_P_DEF.h ├── BMKNS_SNES_DEF.h ├── BSSMSJR_SNES_DEF.h ├── BattleFlipshot_A_DEF.h ├── BlazBlueCF_S_DEF.h ├── Bleach_DS_DEF.h ├── Breakers_A_DEF.h ├── BtlKRoad_A_DIR_DEF.h ├── ButtonDef.h ├── CFE_P_DEF.h ├── CFTE_SNES_DEF.h ├── COTA_A_DEF.h ├── CVS1_A_DEF.h ├── CVS2_A_DEF.h ├── ColorScale.cpp ├── ColorScale.h ├── CrossCopy.cpp ├── CvS2_D_DEF.h ├── Cyberbots_A_DEF.h ├── DANKUGA_A_DEF.h ├── DBFCI_S_DEF.h ├── DBZEB_DS_DEF.h ├── DBZHD_SNES_DEF.h ├── DaemonBrideAG_NL_DEF.h ├── DaemonBride_NL_DEF.h ├── Default.h ├── DescTree.cpp ├── DescTree.h ├── DevMode_DIR_DEF.h ├── DoubleDragon_A_DEF.h ├── FatalFury1_A_DEF.h ├── FatalFury2_A_DEF.h ├── FatalFury3_A_DEF.h ├── FatalFuryS_A_DEF.h ├── FatalFuryS_SNES_DEF.h ├── FightFever_A_DEF.h ├── FotNS_P_DEF.h ├── GAME_Bleach_DS.h ├── GEMFIGHTER_A_DEF.h ├── GGDS_NDS_DEF.h ├── GGML_P_DEF.h ├── GGXXACP_Wii_DEF.h ├── GGXXACR_Common.h ├── GGXXACR_P_DEF.h ├── GGXXACR_S_DEF.h ├── GGXXR_S_DEF.h ├── GUNDAM_SNES_DEF.h ├── GalaxyFight_A_DEF.h ├── GameClass.cpp ├── GameClass.h ├── GameClassByDir.cpp ├── GameClassByDir.h ├── GameClassByFile.cpp ├── GameClassByFile.h ├── GameClassByUnitPerFile.cpp ├── GameClassByUnitPerFile.h ├── GameDef.h ├── GameLoad.cpp ├── GameLoad.h ├── GameRegistry.cpp ├── GameRegistry.h ├── Game_AOF1_A.cpp ├── Game_AOF1_A.h ├── Game_AOF3_A.cpp ├── Game_AOF3_A.h ├── Game_AoDK_A.h ├── Game_AquaPlus_P.h ├── Game_AsuraBuster_A_DIR.h ├── Game_AvgrsGS_A_DIR.cpp ├── Game_AvgrsGS_A_DIR.h ├── Game_BASARA_P.h ├── Game_BMKNS_SNES.h ├── Game_BSSMSJR_SNES.h ├── Game_BattleFlipshot_A.h ├── Game_BlazBlueCF_S.cpp ├── Game_BlazBlueCF_S.h ├── Game_Breakers_A.cpp ├── Game_Breakers_A.h ├── Game_BtlKRoad_A_DIR.h ├── Game_CFE_P.cpp ├── Game_CFE_P.h ├── Game_CFTE_SNES.cpp ├── Game_CFTE_SNES.h ├── Game_COTA_A.h ├── Game_CVS1_A.cpp ├── Game_CVS1_A.h ├── Game_CVS2_A.cpp ├── Game_CVS2_A.h ├── Game_CvS2_D.h ├── Game_Cyberbots_A.h ├── Game_DANKUGA_A.h ├── Game_DBFCI_A.cpp ├── Game_DBFCI_A.h ├── Game_DBZEB_DS.h ├── Game_DBZHD_SNES.h ├── Game_DaemonBrideAG_NL.h ├── Game_DaemonBride_NL.h ├── Game_DevMode_DIR.cpp ├── Game_DevMode_DIR.h ├── Game_DoubleDragon_A.h ├── Game_FatalFury1_A.h ├── Game_FatalFury2_A.cpp ├── Game_FatalFury2_A.h ├── Game_FatalFury3_A.h ├── Game_FatalFuryS_A.h ├── Game_FatalFuryS_SNES.h ├── Game_FightFever_A.cpp ├── Game_FightFever_A.h ├── Game_FotNS_P.h ├── Game_GEMFIGHTER_A.h ├── Game_GGDS_NDS.h ├── Game_GGML_P.h ├── Game_GGXXACP_Wii.h ├── Game_GGXXACR_P.h ├── Game_GGXXACR_S.cpp ├── Game_GGXXACR_S.h ├── Game_GGXXR_S.h ├── Game_GUNDAM_SNES.h ├── Game_GalaxyFight_A.h ├── Game_Garou_A.cpp ├── Game_Garou_A.h ├── Game_Garou_S.h ├── Game_Gowcaizer_A.h ├── Game_HIppo_GBA.h ├── Game_HSF2_A.cpp ├── Game_HSF2_A.h ├── Game_JChan_A.h ├── Game_JOJOS_A.cpp ├── Game_JOJOS_A.h ├── Game_JOJOS_A_DIR.cpp ├── Game_JOJOS_A_DIR.h ├── Game_JojosRPG_SNES.h ├── Game_JusticeLeagueTF_SNES.h ├── Game_KI_SNES.h ├── Game_KOF00N_A.h ├── Game_KOF01_A.cpp ├── Game_KOF01_A.h ├── Game_KOF02PS2_A.cpp ├── Game_KOF02PS2_A.h ├── Game_KOF02UM_S.cpp ├── Game_KOF02UM_S.h ├── Game_KOF02UM_S_DIR.cpp ├── Game_KOF02UM_S_DIR.h ├── Game_KOF02_A.cpp ├── Game_KOF02_A.h ├── Game_KOF03_A.cpp ├── Game_KOF03_A.h ├── Game_KOF94_A.cpp ├── Game_KOF94_A.h ├── Game_KOF95_A.cpp ├── Game_KOF95_A.h ├── Game_KOF96_A.cpp ├── Game_KOF96_A.h ├── Game_KOF97_A.cpp ├── Game_KOF97_A.h ├── Game_KOF98AE2016_A.h ├── Game_KOF98_A.cpp ├── Game_KOF98_A.h ├── Game_KOF99_A.cpp ├── Game_KOF99_A.h ├── Game_KOFEX2_GBA.h ├── Game_KOFXI_A.cpp ├── Game_KOFXI_A.h ├── Game_KOTM_A.h ├── Game_KabukiKlash_A.h ├── Game_KarnovsR_A.cpp ├── Game_KarnovsR_A.h ├── Game_Kizuna_A.h ├── Game_LASTBLADE2_A.cpp ├── Game_LASTBLADE2_A.h ├── Game_LASTBLADE_A.cpp ├── Game_LASTBLADE_A.h ├── Game_MAAB_A.h ├── Game_MBAACC_S.h ├── Game_MBTL_A.cpp ├── Game_MBTL_A.h ├── Game_MK1_A.cpp ├── Game_MK1_A.h ├── Game_MK1_SNES.h ├── Game_MK2_A.cpp ├── Game_MK2_A.h ├── Game_MK2_SNES.cpp ├── Game_MK2_SNES.h ├── Game_MMPR_SNES.h ├── Game_MMX2_SNES.h ├── Game_MMX3_SNES.h ├── Game_MMX_SNES.h ├── Game_MSHVSF_A.cpp ├── Game_MSHVSF_A.h ├── Game_MSHVSF_P.h ├── Game_MSHWOTG_SNES.h ├── Game_MSH_A.cpp ├── Game_MSH_A.h ├── Game_MVC2_A.cpp ├── Game_MVC2_A.h ├── Game_MVC2_A_DIR.cpp ├── Game_MVC2_A_DIR.h ├── Game_MVC2_D.cpp ├── Game_MVC2_D.h ├── Game_MVC2_P.cpp ├── Game_MVC2_P.h ├── Game_MVC_A.cpp ├── Game_MVC_A.h ├── Game_MWarr_A_DIR.h ├── Game_MagicalDropIII_A.h ├── Game_MagicalDropII_A.h ├── Game_MartialMasters_A.h ├── Game_Matrimelee_A.h ├── Game_MvC_P.h ├── Game_NBHID_S.h ├── Game_NEOGEO_A.cpp ├── Game_NEOGEO_A.h ├── Game_NGBC_A.cpp ├── Game_NGBC_A.h ├── Game_NeoBomberman_A.h ├── Game_NinjaMasters_A.h ├── Game_P4AU_FightClub.h ├── Game_P4AU_NESICA.h ├── Game_P4AU_STEAM.h ├── Game_PrimalRage_SNES.h ├── Game_RBFF1_A.h ├── Game_RBFF2_A.cpp ├── Game_RBFF2_A.h ├── Game_RBFFS_A.cpp ├── Game_RBFFS_A.h ├── Game_REDEARTH_A.cpp ├── Game_REDEARTH_A.h ├── Game_REDEARTH_A_DIR.cpp ├── Game_REDEARTH_A_DIR.h ├── Game_RODSM2_A.h ├── Game_ROTD_A.h ├── Game_RanmaCRH_SNES.h ├── Game_RanmaHB_SNES.h ├── Game_SAMSHO1_A.cpp ├── Game_SAMSHO1_A.h ├── Game_SAMSHO2_A.cpp ├── Game_SAMSHO2_A.h ├── Game_SAMSHO3_A.cpp ├── Game_SAMSHO3_A.h ├── Game_SAMSHO4_A.cpp ├── Game_SAMSHO4_A.h ├── Game_SAMSHO5SP_A.cpp ├── Game_SAMSHO5SP_A.h ├── Game_SAMSHO5_A.cpp ├── Game_SAMSHO5_A.h ├── Game_SDodgeBall_A.h ├── Game_SF2CE_A.cpp ├── Game_SF2CE_A.h ├── Game_SF2HF_A.cpp ├── Game_SF2HF_A.h ├── Game_SFA1_A.cpp ├── Game_SFA1_A.h ├── Game_SFA2_A.cpp ├── Game_SFA2_A.h ├── Game_SFA3_A.cpp ├── Game_SFA3_A.h ├── Game_SFIII1_A.h ├── Game_SFIII1_A_DIR.h ├── Game_SFIII2_A.cpp ├── Game_SFIII2_A.h ├── Game_SFIII2_A_DIR.h ├── Game_SFIII3_A.cpp ├── Game_SFIII3_A.h ├── Game_SFIII3_A_DIR.cpp ├── Game_SFIII3_A_DIR.h ├── Game_SFIII3_D.cpp ├── Game_SFIII3_D.h ├── Game_SFTM_A.cpp ├── Game_SFTM_A.h ├── Game_SFZ3U_A.cpp ├── Game_SFZ3U_A.h ├── Game_SHAQFU_SNES.h ├── Game_SPF2T_A.h ├── Game_SSF2T_A.cpp ├── Game_SSF2T_A.h ├── Game_SSF2T_GBA.cpp ├── Game_SSF2T_GBA.h ├── Game_SVCPLUSA_A.cpp ├── Game_SVCPLUSA_A.h ├── Game_SVG_SNES.h ├── Game_SavageReign_A.h ├── Game_StreetFighter_A.cpp ├── Game_StreetFighter_A.h ├── Game_SurvivalArts_A.cpp ├── Game_SurvivalArts_A.h ├── Game_TMNTTF_SNES.cpp ├── Game_TMNTTF_SNES.h ├── Game_TattooAsns_A.h ├── Game_TekkenAdvance_GBA.h ├── Game_TopF2005_Sega.h ├── Game_UMK3_A.cpp ├── Game_UMK3_A.h ├── Game_UMK3_DS.h ├── Game_UMK3_SNES.h ├── Game_UNICLR_A.cpp ├── Game_UNICLR_A.h ├── Game_VHUNT2_A.h ├── Game_VSAV2_A.h ├── Game_VSAV_A.h ├── Game_VampireHunter_A.h ├── Game_VampireNightWarriors_A.cpp ├── Game_VampireNightWarriors_A.h ├── Game_Venture_A.cpp ├── Game_Venture_A.h ├── Game_Venture_A_DIR.cpp ├── Game_Venture_A_DIR.h ├── Game_WakuWaku7_A.cpp ├── Game_WakuWaku7_A.h ├── Game_Windjammers_A.h ├── Game_XMMA_SNES.h ├── Game_XMVSF_A.h ├── Game_XMVSF_P.h ├── Garou_A_DEF.h ├── Gowcaizer_A_DEF.h ├── HIppo_GBA_DEF.h ├── HSF2_A_DEF.h ├── ImgIdDef.h ├── ImgTicket.h ├── JChan_A_DEF.h ├── JOJOS_A_DEF.h ├── JojosRPG_SNES_DEF.h ├── JusticeLeagueTF_SNES_DEF.h ├── KIZUNA_A_DEF.h ├── KI_SNES_DEF.h ├── KOF00N_A_DEF.h ├── KOF01_A_DEF.h ├── KOF02PS2_A_DEF.h ├── KOF02UM_S_DEF.h ├── KOF02UM_S_DIR_DEF.h ├── KOF02_A_DEF.h ├── KOF03_A_DEF.h ├── KOF94_A_DEF.h ├── KOF95_A_DEF.h ├── KOF96_A_DEF.h ├── KOF97_A_DEF.h ├── KOF98AE2016_A_DEF.h ├── KOF98_A_DEF.h ├── KOF99_A_DEF.h ├── KOFEX2_GBA_DEF.h ├── KOFXI_A_DEF.h ├── KOTM_A_DEF.h ├── KabukiKlash_A_DEF.h ├── KarnovsR_A_DEF.h ├── LASTBLADE2_A_DEF.h ├── LASTBLADE_A_DEF.h ├── MAAB_A_DEF.h ├── MBAACC_S_DEF.h ├── MBTL_S_DEF.h ├── MK1_A_DEF.h ├── MK1_SNES_DEF.h ├── MK2_A_DEF.h ├── MK2_SNES_DEF.h ├── MMPR_SNES_DEF.h ├── MMX2_SNES_DEF.h ├── MMX3_SNES_DEF.h ├── MMX_SNES_DEF.h ├── MSHVSF_A_DEF.h ├── MSHVSF_P_DEF.h ├── MSHWOTG_SNES_DEF.h ├── MSH_A_DEF.h ├── MVC2_A_DEF.h ├── MVC2_D_Def.h ├── MVC2_PALSEL.cpp ├── MVC2_SUPP.cpp ├── MVC_A_DEF.h ├── MWARR_A_DIR_DEF.h ├── MagicalDropIII_A_DEF.h ├── MagicalDropII_A_DEF.h ├── MartialMasters_A_DEF.h ├── Matrimelee_A_DEF.h ├── MvC_P_DEF.h ├── NBHID_S_DEF.h ├── NEOGEO_A_DEF.h ├── NGBC_A_DEF.h ├── NeoBomberman_A_DEF.h ├── NinjaMasters_A_DEF.h ├── P4AU_Common.h ├── P4AU_FightClub_DEF.h ├── P4AU_NESICA_DEF.h ├── P4AU_STEAM_DEF.h ├── PalGroup.cpp ├── PalGroup.h ├── Patching.cpp ├── PrimalRage_SNES_DEF.h ├── RBFF1_A_DEF.h ├── RBFF2_A_DEF.h ├── RBFFS_A_DEF.h ├── REDEARTH_A_DEF.h ├── RODSM2_A_DEF.h ├── ROTD_A_DEF.h ├── RanmaCRH_SNES_DEF.h ├── RanmaHB_SNES_DEF.h ├── SAMSHO1_A_DEF.h ├── SAMSHO2_A_DEF.h ├── SAMSHO3_A_DEF.h ├── SAMSHO4_A_DEF.h ├── SAMSHO5SP_A_DEF.h ├── SAMSHO5_A_DEF.h ├── SDodgeBall_A_DEF.h ├── SF2CE_A_DEF.h ├── SF2HF_A_DEF.h ├── SFA1_A_DEF.h ├── SFA2_A_DEF.h ├── SFA2_Hack_DEF.h ├── SFA3_A_DEF.h ├── SFIII1_A_DEF.h ├── SFIII2_A_DEF.h ├── SFIII3_A_DEF.h ├── SFIII3_D_DEF.h ├── SFTM_A_DEF.h ├── SFZ3U_A_DEF.h ├── SHAQFU_SNES_DEF.h ├── SPF2T_A_DEF.h ├── SSF2T_A_DEF.h ├── SSF2T_GBA_DEF.h ├── SVCPLUSA_A_DEF.h ├── SVG_SNES_DEF.h ├── SavageReign_A_DEF.h ├── ShellSort.cpp ├── ShellSort.h ├── StreetFighter_A_DEF.h ├── SuppProc.cpp ├── SuppProc.h ├── SurvivalArts_A_DEF.h ├── TMNTTF_SNES_DEF.h ├── TattooAsns_A_DEF.h ├── TekkenAdvance_GBA_DEF.h ├── TopF2005_Sega_DEF.h ├── UMK3_A_DEF.h ├── UMK3_DS_DEF.h ├── UMK3_SNES_DEF.h ├── UNICLR_S_DEF.h ├── VHUNT2_A_DEF.h ├── VSAV2_A_DEF.h ├── VSAV_A_DEF.h ├── VampireHunter_A_DEF.h ├── VampireNightWarriors_A_DEF.h ├── Venture_A_DEF.h ├── WakuWaku7_A_DEF.h ├── Windjammers_A_DEF.h ├── XMMA_SNES_DEF.h ├── XMVSF_A_DEF.h ├── XMVSF_P_DEF.h ├── mvc2_descs.h ├── mvc2_supp.h ├── mvc2_validate.cpp └── mvc2_validate.h ├── HPALfiles.cpp ├── HTMLfiles.cpp ├── IMPLfiles.cpp ├── ImgDat.cpp ├── ImgDat.h ├── ImgDisp.cpp ├── ImgDisp.h ├── ImgDumpBmp.cpp ├── ImgDumpBmp.h ├── ImgInfoList.cpp ├── ImgInfoList.h ├── ImgOutDlg.cpp ├── ImgOutDlg.h ├── Junk.cpp ├── Junk.h ├── MUI-PalMod.sln ├── MUI-PalMod.vcxproj ├── MUI-PalMod.vcxproj.filters ├── PALfiles.cpp ├── PNGfiles.cpp ├── PS3OEfiles.cpp ├── PalMod.cpp ├── PalMod.h ├── PalMod.rc ├── PalMod.sln ├── PalMod.vcproj ├── PalMod.vcxproj ├── PalMod.vcxproj.filters ├── PalMod.vcxproj.user ├── PalModDlg.cpp ├── PalModDlg.h ├── PalModDlg_Color.cpp ├── PalModDlg_Config.cpp ├── PalModDlg_Edit.cpp ├── PalModDlg_File.cpp ├── PalModDlg_General.cpp ├── PalModDlg_Menu.cpp ├── PalTool.cpp ├── PalTool.h ├── PreviewDlg.cpp ├── PreviewDlg.h ├── RLEData.cpp ├── RLEData.h ├── RegProc.cpp ├── RegProc.h ├── Release ├── CodeAnalysisResultManifest.txt ├── KIE.txt ├── PalMod.exe.recipe └── bgbmp.bmp ├── SettDlg.cpp ├── SettDlg.h ├── UndoRedo.cpp ├── UndoRedo.h ├── debugutil.cpp ├── debugutil.h ├── lodepng ├── LICENSE ├── Makefile ├── README.md ├── examples │ ├── example_4bit_palette.cpp │ ├── example_bmp2png.cpp │ ├── example_decode.c │ ├── example_decode.cpp │ ├── example_encode.c │ ├── example_encode.cpp │ ├── example_encode_type.cpp │ ├── example_gzip.cpp │ ├── example_opengl.cpp │ ├── example_optimize_png.cpp │ ├── example_png2bmp.cpp │ ├── example_png_info.cpp │ ├── example_reencode.cpp │ ├── example_sdl.c │ └── example_sdl.cpp ├── lodepng.cpp ├── lodepng.h ├── lodepng_benchmark.cpp ├── lodepng_fuzzer.cpp ├── lodepng_unittest.cpp ├── lodepng_util.cpp ├── lodepng_util.h └── pngdetail.cpp ├── mui.rcconfig ├── newgamedummy ├── Game_NEWGAME_A.h └── NEWGAME_A_DEF.h ├── res ├── PalMod.ico ├── PalMod.rc2 └── palmod.manifest ├── resource.h ├── stdafx.cpp ├── stdafx.h └── targetver.h /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PalMod 2 | Palette-editing software for classic fighting games, mostly centered around Capcom games. 3 | 4 | PalMod is the active branch. That's where I'm releasing binaries from. Daily betas are published to https://zachd.com/palmod/releases . 5 | 6 | LKG is a mirror of the 2008 version of this code. This was version "1.22". There are a number of variants of 1.22: some binary hacks of it, and a couple recompiles. In all cases I have folded every positive change I know of into the active branch. There is also a very similar version of "1.22" at DrewDos's PalMod branch on GitHub. 7 | -------------------------------------------------------------------------------- /en-gb/en-gb.cpp: -------------------------------------------------------------------------------- 1 | // en-gb.cpp : Defines the functions for the static library. 2 | // 3 | 4 | #include "pch.h" 5 | #include "framework.h" 6 | 7 | // TODO: This is an example of a library function 8 | void fnengb() 9 | { 10 | } 11 | -------------------------------------------------------------------------------- /en-gb/en-gb.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | 26 | 27 | Source Files 28 | 29 | 30 | Source Files 31 | 32 | 33 | 34 | 35 | Resource Files 36 | 37 | 38 | -------------------------------------------------------------------------------- /en-gb/en-gb.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /en-gb/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 4 | -------------------------------------------------------------------------------- /en-gb/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: source file corresponding to the pre-compiled header 2 | 3 | #include "pch.h" 4 | 5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. 6 | -------------------------------------------------------------------------------- /en-gb/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: This is a precompiled header file. 2 | // Files listed below are compiled only once, improving build performance for future builds. 3 | // This also affects IntelliSense performance, including code completion and many code browsing features. 4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds. 5 | // Do not add files here that you will be updating frequently as this negates the performance advantage. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // add headers that you want to pre-compile here 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Default.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_DESC 48 4 | #define MAX_FILENAME 16 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lkg/2014-12-26/DescTree.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Default.h" 3 | 4 | #define DESC_NODETYPE_TREE 0 5 | #define DESC_NODETYPE_NODE 1 6 | 7 | #define DESC_ENDGET -1 8 | 9 | //Description tree definition 10 | 11 | struct sDescNode 12 | { 13 | CHAR szDesc[MAX_DESC]; 14 | 15 | UINT8 uUnitId; 16 | UINT16 uPalId; 17 | }; 18 | 19 | struct sDescTreeNode 20 | { 21 | CHAR szDesc[MAX_DESC]; 22 | 23 | UINT8 uChildType; 24 | void * ChildNodes; 25 | UINT16 uChildAmt; 26 | }; 27 | 28 | class CDescTree 29 | { 30 | private: 31 | sDescTreeNode * RootTree; 32 | public: 33 | CDescTree(sDescTreeNode * InputTree = NULL); 34 | ~CDescTree(void); 35 | 36 | void SetRootTree(sDescTreeNode * NewTree){ RootTree = NewTree;}; 37 | void FlushTree(sDescTreeNode * CurrTree); 38 | void FlushRootTree(); 39 | sDescNode * GetDescNode(int nChildId, ...); 40 | sDescTreeNode * GetDescTree(int nChildId, ...); 41 | }; 42 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/Default.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_DESC 48 4 | #define MAX_FILENAME 16 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/DescTree.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Default.h" 3 | 4 | #define DESC_NODETYPE_TREE 0 5 | #define DESC_NODETYPE_NODE 1 6 | 7 | #define DESC_ENDGET -1 8 | 9 | //Description tree definition 10 | 11 | struct sDescNode 12 | { 13 | CHAR szDesc[MAX_DESC]; 14 | 15 | UINT8 uUnitId; 16 | UINT16 uPalId; 17 | }; 18 | 19 | struct sDescTreeNode 20 | { 21 | CHAR szDesc[MAX_DESC]; 22 | 23 | UINT8 uChildType; 24 | void * ChildNodes; 25 | UINT16 uChildAmt; 26 | }; 27 | 28 | class CDescTree 29 | { 30 | private: 31 | sDescTreeNode * RootTree; 32 | public: 33 | CDescTree(sDescTreeNode * InputTree = NULL); 34 | ~CDescTree(void); 35 | 36 | void SetRootTree(sDescTreeNode * NewTree){ RootTree = NewTree;}; 37 | void FlushTree(sDescTreeNode * CurrTree); 38 | void FlushRootTree(); 39 | sDescNode * GetDescNode(int nChildId, ...); 40 | sDescTreeNode * GetDescTree(int nChildId, ...); 41 | }; 42 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/GameDef.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //A = Arcade 4 | //X = XBox 5 | //D = Dreamcast 6 | //P = Playstation 2 7 | 8 | //Game Definitions 9 | #define NUM_GAMES 8 10 | 11 | 12 | 13 | #define MVC2_D 0 14 | #define SFIII3_A 1 15 | #define MVC2_P 2 16 | #define SSF2T_A 3 17 | #define SFA3_A 4 18 | #define XMVSF_A 5 19 | #define MVC_A 6 20 | #define SFIII3_D 7 21 | 22 | //Images 23 | 24 | #define IMG4 0 //Image Game Flag 25 | #define IMG5 1 //Image Game Flag 26 | 27 | //Size of image per image game flag 28 | const int IMGAMT[2] = 29 | { 30 | 0x3B + 0x11, 31 | 0x14 32 | }; 33 | 34 | //Display types (used for image out) 35 | enum eDispType 36 | { 37 | DISP_DEF, 38 | DISP_ALT 39 | }; 40 | 41 | //Basic button labels 42 | #define BUTTON6 6 43 | #define BUTTON7 7 44 | 45 | const CHAR DEF_BUTTONLABEL6[6][3] = 46 | { 47 | "LP", "MP", "HP", "LK", "MK", "HK" 48 | }; 49 | 50 | const CHAR DEF_BUTTONLABEL6ALT[6][3] = 51 | { 52 | "LP", "LK", "HP", "HK", "A1", "A2" 53 | }; 54 | 55 | const CHAR DEF_BUTTONLABEL7[7][3] = 56 | { 57 | "LP", "MP", "HP", "LK", "MK", "HK", "EX" 58 | }; 59 | 60 | #define DESC2 2 61 | #define DESC6 6 62 | //Primary / Secondary descriptions 63 | 64 | const CHAR DEF_DESCPRISEC[3][16] = 65 | { 66 | "Primary", "Secondary" 67 | }; 68 | 69 | //Street Fighter Alpha 3 descriptions 70 | const CHAR DEF_DESCSFA3[6][16] = 71 | { 72 | "Primary", "Secondary", "Primary", "Secondary", "Primary", "Secondary" 73 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/GameLoad.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "GameClass.h" 4 | 5 | class CGameLoad 6 | { 7 | private: 8 | BOOL SetGame(int nGameFlag); 9 | 10 | UINT8 (*GetRuleCtr)(void); 11 | void (*ResetRuleCtr)(void); 12 | sFileRule (*GetNextRule)(void); 13 | sFileRule (*GetRule)(int); 14 | CGameClass * CreateGame(int nGameFlag); 15 | 16 | CString szLoadSaveStr; 17 | 18 | int nSaveLoadCount; 19 | int nSaveLoadSucc; 20 | int nSaveLoadErr; 21 | public: 22 | CGameLoad(void); 23 | ~CGameLoad(void); 24 | 25 | CGameClass * LoadFile(int nGameFlag, CHAR * szLoadFile); 26 | CGameClass * LoadDir(int nGameFlag, CHAR * szLoadDir); 27 | void SaveGame(CGameClass * CurrGame); 28 | 29 | int GetErrCt(){return nSaveLoadErr;}; 30 | CString GetLoadSaveStr(){return szLoadSaveStr;}; 31 | }; 32 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/Game_MVC2_P.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_MVC2_P.h" 3 | 4 | UINT8 CGame_MVC2_P::uRuleCtr = 0; 5 | 6 | 7 | CGame_MVC2_P::CGame_MVC2_P(void) 8 | { 9 | //CGame_MVC2_D(); 10 | 11 | nGameFlag = MVC2_P; 12 | } 13 | 14 | CGame_MVC2_P::~CGame_MVC2_P(void) 15 | { 16 | //~CGame_MVC2_D(); 17 | } 18 | 19 | 20 | 21 | 22 | 23 | sFileRule CGame_MVC2_P::GetRule(int nRuleId) 24 | { 25 | sFileRule NewFileRule; 26 | 27 | nRuleId = (nRuleId & 0xFF00) == 0xFF00 ? (nRuleId & 0x00FF) : MVC2_D_UNITSORT[nRuleId]; 28 | sprintf_s(NewFileRule.szFileName, MAX_FILENAME, "PL%02XPAK.BIN", nRuleId); 29 | 30 | NewFileRule.uUnitId = nRuleId; 31 | NewFileRule.uVerifyVar = (short int) -1; 32 | 33 | return NewFileRule; 34 | } 35 | 36 | sFileRule CGame_MVC2_P::GetNextRule() 37 | { 38 | 39 | 40 | sFileRule NewFileRule = GetRule(uRuleCtr); 41 | 42 | uRuleCtr++; 43 | 44 | if(uRuleCtr >= MVC2_D_NUMUNIT) 45 | { 46 | uRuleCtr = 0xFF; 47 | } 48 | 49 | return NewFileRule; 50 | } -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/Game_MVC2_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_MVC2_D.h" 3 | 4 | class CGame_MVC2_P : 5 | public CGame_MVC2_D 6 | { 7 | public: 8 | CGame_MVC2_P(void); 9 | ~CGame_MVC2_P(void); 10 | 11 | //Static functions 12 | static UINT8 uRuleCtr; 13 | 14 | static UINT8 GetRuleCtr(){return uRuleCtr;}; 15 | static void ResetRuleCtr(){uRuleCtr = 0;}; 16 | 17 | static sFileRule GetNextRule(); 18 | static sFileRule GetRule(int nRuleId); 19 | }; 20 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/Game_MVC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "MVC_A_DEF.h" 4 | 5 | 6 | class CGame_MVC_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_MVC_A(void); 28 | ~CGame_MVC_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | static int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/Game_SFA3_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SFA3_A_DEF.h" 4 | 5 | 6 | class CGame_SFA3_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SFA3_A(void); 28 | ~CGame_SFA3_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/Game_SSF2T_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SSF2T_A_DEF.h" 4 | 5 | 6 | class CGame_SSF2T_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SSF2T_A(void); 28 | ~CGame_SSF2T_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | static int GetPalCt(int nUnitId); 41 | 42 | static void LoadExtraFile(); 43 | 44 | //Normal functions 45 | CDescTree * GetMainTree(); 46 | 47 | 48 | 49 | void CreateDefPal(sDescNode * srcNode, int nSepId); 50 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 51 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 52 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 53 | 54 | COLORREF * CreatePal(int nUnitId, int nPalId); 55 | 56 | void UpdatePalData(); 57 | 58 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 59 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 60 | 61 | 62 | }; 63 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/ImgTicket.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sImgTicket 4 | { 5 | 6 | 7 | int nUnitId; 8 | int nImgId; 9 | 10 | int nXOffs; 11 | int nYOffs; 12 | 13 | sImgTicket * NextTicket; 14 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/SFA3_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFA3_A_NUMUNIT 28 4 | #define SFA3_A_PALSZ 16 5 | 6 | #define SFA3_A_IMGSTART 0x3B + 0x11 7 | 8 | const UINT16 SFA3_A_IMGREDIR[SFA3_A_NUMUNIT] = 9 | { 10 | 0x00, 11 | 0x27, 12 | 0x1E, 13 | 0x21, 14 | SFA3_A_IMGSTART + 0x00, 15 | SFA3_A_IMGSTART + 0x01, 16 | SFA3_A_IMGSTART + 0x02, 17 | SFA3_A_IMGSTART + 0x03, 18 | SFA3_A_IMGSTART + 0x04, 19 | SFA3_A_IMGSTART + 0x05, 20 | 0x26, 21 | SFA3_A_IMGSTART + 0x06, 22 | 0x23, 23 | 0x22, 24 | SFA3_A_IMGSTART + 0x07, 25 | 0x25, 26 | 0x01, 27 | SFA3_A_IMGSTART + 0x08, 28 | SFA3_A_IMGSTART + 0x09, 29 | 0x24, 30 | SFA3_A_IMGSTART + 0x0A, 31 | SFA3_A_IMGSTART + 0x0B, 32 | SFA3_A_IMGSTART + 0x0C, 33 | SFA3_A_IMGSTART + 0x0D, 34 | SFA3_A_IMGSTART + 0x0E, 35 | SFA3_A_IMGSTART + 0x0F, 36 | SFA3_A_IMGSTART + 0x10, 37 | SFA3_A_IMGSTART + 0x11, 38 | 39 | }; 40 | 41 | const CHAR SFA3_A_UNITDESC[SFA3_A_NUMUNIT][16] = 42 | { 43 | "Ryu", 44 | "Ken", 45 | "Gouki", 46 | "Charlie", 47 | "Chun-Li", 48 | "Adon", 49 | "Sodom", 50 | "Guy", 51 | "Birdie", 52 | "Rose", 53 | "M. Bison", 54 | "Sagat", 55 | "Dan", 56 | "Sakura", 57 | "Rolento", 58 | "Dhalsim", 59 | "Zangief", 60 | "Gen", 61 | "Balrog", 62 | "Cammy", 63 | "E. Honda", 64 | "Blanka", 65 | "R. Mika", 66 | "Cody", 67 | "Vega", 68 | "Karin", 69 | "Juni", 70 | "Juli" 71 | 72 | 73 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/SFIII3_D_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFIII3_D_NUMUNIT 0x14 4 | #define SFIII3_D_PALSZ 64 5 | 6 | const char SFIII3_D_UNITDESC[SFIII3_D_NUMUNIT][16] = 7 | { 8 | //"Gill", //0x 9 | "Alex", //0x00 10 | "Ryu", //0x01 11 | "Yun", //0x02 12 | "Dudley", //0x03 13 | "Necro", //0x04 14 | "Hugo", //0x05 15 | "Ibuki", //0x06 16 | "Elena", //0x07 17 | "Oro", //0x08 18 | "Yang", //0x09 19 | "Ken", //0x0A 20 | "Sean", //0x0B 21 | "Urien", //0x0C 22 | "Gouki", //0x0D 23 | "Shin-Gouki", //0x0E 24 | "Chun-Li", //0x0F 25 | "Makoto", //0x10 26 | "Q", //0x11 27 | "Twelve", //0x12 28 | "Remy" //0x13 29 | }; 30 | 31 | const UINT8 SFIII3_D_UNITSORT[SFIII3_D_NUMUNIT] = //Plus 1 for the extra palettes 32 | { 33 | 0x00, 34 | 0x0F, 35 | 0x03, 36 | 0x07, 37 | 0x0D, 38 | 0x05, 39 | 0x06, 40 | 0x0A, 41 | 0x10, 42 | 0x04, 43 | 0x08, 44 | 0x11, 45 | 0x13, 46 | 0x01, 47 | 0x0B, 48 | 0x0E, 49 | 0x12, 50 | 0x0C, 51 | 0x09, 52 | 0x02 53 | 54 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/SSF2T_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SSF2T_A_NUMUNIT 17 4 | #define SSF2T_A_PALSZ 16 5 | 6 | #define SSF2T_A_IMGOFFSET 0x3B 7 | 8 | const CHAR SSF2T_A_UNITDESC[SSF2T_A_NUMUNIT][16] = 9 | { 10 | "Ryu", 11 | "E-Honda", 12 | "Blanka", 13 | "Guile", 14 | "Ken", 15 | "Chun-Li", 16 | "Zangief", 17 | "Dhalsim", 18 | "M.Bison", 19 | "Sagat", 20 | "Balrog", 21 | "Vega", 22 | "Cammy", 23 | "T-Hawk", 24 | "Fei Long", 25 | "Dee Jay", 26 | "Gouki" 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/ShellSort.h: -------------------------------------------------------------------------------- 1 | //#pragma once 2 | 3 | void ShellSort(double * fpSrc, double * fpExtra1, double * fpExtra2, int * pPalette, UINT16 * pTable, int max); 4 | void ccRGBtoXYZ(double r, double g, double b, double* x, double* y, double* z); 5 | void SpecialSort(double * fpSrc, int * pPalette, UINT16 * pTable, int nSize); 6 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game/XMVSF_A_DEF.h: -------------------------------------------------------------------------------- 1 | #define XMVSF_A_NUMUNIT 19 2 | #define XMVSF_A_PALSZ 16 3 | #define XMVSF_A_IMGSTART (0x3B + 0x11 + 0x11) //MVC2, then SSF2T, then SFA3 4 | 5 | 6 | const UINT8 XMVSF_A_IMGREDIR[XMVSF_A_NUMUNIT] = 7 | { 8 | 0x07, 9 | 0x06, 10 | 0x2A, 11 | 0x0A, 12 | 0x28, 13 | 0x2B, 14 | 0x29, 15 | 0x2C, 16 | XMVSF_A_IMGSTART, 17 | 0x00, 18 | 0x27, 19 | 0x1B, 20 | 0x25, 21 | 0x01, 22 | 0x26, 23 | 0x1E, 24 | 0x21, 25 | 0x24, 26 | 0x3B + 0x11 // Chun Li's image in SFA3 27 | 28 | }; 29 | 30 | const CHAR XMVSF_A_UNITDESC[XMVSF_A_NUMUNIT][16] = 31 | { 32 | "Wolverine", 33 | "Cyclops", 34 | "Storm", 35 | "Rogue", 36 | "Gambit", 37 | "Sabretooth", 38 | "Juggernaut", 39 | "Magneto", 40 | "Apocalypse", 41 | "Ryu", 42 | "Ken", 43 | "Chun-Li", 44 | "Dhalsim", 45 | "Zangief", 46 | "M. Bison", 47 | "Gouki", 48 | "Charlie", 49 | "Cammy", 50 | "Chun-Li (SFA)" 51 | }; 52 | 53 | const UINT32 XMVSF_A_UNITLOC[XMVSF_A_NUMUNIT + 1] = 54 | { 55 | 0x14D7C, 56 | 0x14E3C, 57 | 0x14FBC, 58 | 0x1531C, 59 | 0x153DC, //GAMBIT 60 | 0x1549C, 61 | 0x1559C, 62 | 0x156BC, 63 | 0x157DC, 64 | 0x1589C, 65 | 0x15A1C, 66 | 0x15B9C, 67 | 0x15C5C, 68 | 0x15D5C, 69 | 0x15FDC, 70 | 0x1609C, 71 | 0x1621C, 72 | 0x1639C, 73 | 0x164BC, 74 | 0x1657C, 75 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/GameDef.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //A = Arcade 4 | //X = XBox 5 | //D = Dreamcast 6 | //P = Playstation 2 7 | 8 | //Game Definitions 9 | #define NUM_GAMES 8 10 | 11 | 12 | 13 | #define MVC2_D 0 14 | #define SFIII3_A 1 15 | #define MVC2_P 2 16 | #define SSF2T_A 3 17 | #define SFA3_A 4 18 | #define XMVSF_A 5 19 | #define MVC_A 6 20 | #define SFIII3_D 7 21 | 22 | //Images 23 | 24 | #define IMG4 0 //Image Game Flag 25 | #define IMG5 1 //Image Game Flag 26 | 27 | //Size of image per image game flag 28 | const int IMGAMT[2] = 29 | { 30 | 0x3B + 0x11, 31 | 0x14 32 | }; 33 | 34 | //Display types (used for image out) 35 | enum eDispType 36 | { 37 | DISP_DEF, 38 | DISP_ALT 39 | }; 40 | 41 | //Basic button labels 42 | #define BUTTON6 6 43 | #define BUTTON7 7 44 | 45 | const CHAR DEF_BUTTONLABEL6[6][3] = 46 | { 47 | "LP", "MP", "HP", "LK", "MK", "HK" 48 | }; 49 | 50 | const CHAR DEF_BUTTONLABEL6ALT[6][3] = 51 | { 52 | "LP", "LK", "HP", "HK", "A1", "A2" 53 | }; 54 | 55 | const CHAR DEF_BUTTONLABEL7[7][3] = 56 | { 57 | "LP", "MP", "HP", "LK", "MK", "HK", "EX" 58 | }; 59 | 60 | #define DESC2 2 61 | #define DESC6 6 62 | //Primary / Secondary descriptions 63 | 64 | const CHAR DEF_DESCPRISEC[3][16] = 65 | { 66 | "Primary", "Secondary" 67 | }; 68 | 69 | //Street Fighter Alpha 3 descriptions 70 | const CHAR DEF_DESCSFA3[6][16] = 71 | { 72 | "Primary", "Secondary", "Primary", "Secondary", "Primary", "Secondary" 73 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/GameLoad.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "GameClass.h" 4 | 5 | class CGameLoad 6 | { 7 | private: 8 | BOOL SetGame(int nGameFlag); 9 | 10 | UINT8 (*GetRuleCtr)(void); 11 | void (*ResetRuleCtr)(void); 12 | sFileRule (*GetNextRule)(void); 13 | sFileRule (*GetRule)(int); 14 | CGameClass * CreateGame(int nGameFlag); 15 | 16 | CString szLoadSaveStr; 17 | 18 | int nSaveLoadCount; 19 | int nSaveLoadSucc; 20 | int nSaveLoadErr; 21 | public: 22 | CGameLoad(void); 23 | ~CGameLoad(void); 24 | 25 | CGameClass * LoadFile(int nGameFlag, CHAR * szLoadFile); 26 | CGameClass * LoadDir(int nGameFlag, CHAR * szLoadDir); 27 | void SaveGame(CGameClass * CurrGame); 28 | 29 | int GetErrCt(){return nSaveLoadErr;}; 30 | CString GetLoadSaveStr(){return szLoadSaveStr;}; 31 | }; 32 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game_MVC2_P.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_MVC2_P.h" 3 | 4 | UINT8 CGame_MVC2_P::uRuleCtr = 0; 5 | 6 | 7 | CGame_MVC2_P::CGame_MVC2_P(void) 8 | { 9 | //CGame_MVC2_D(); 10 | 11 | nGameFlag = MVC2_P; 12 | } 13 | 14 | CGame_MVC2_P::~CGame_MVC2_P(void) 15 | { 16 | //~CGame_MVC2_D(); 17 | } 18 | 19 | 20 | 21 | 22 | 23 | sFileRule CGame_MVC2_P::GetRule(int nRuleId) 24 | { 25 | sFileRule NewFileRule; 26 | 27 | nRuleId = (nRuleId & 0xFF00) == 0xFF00 ? (nRuleId & 0x00FF) : MVC2_D_UNITSORT[nRuleId]; 28 | sprintf_s(NewFileRule.szFileName, MAX_FILENAME, "PL%02XPAK.BIN", nRuleId); 29 | 30 | NewFileRule.uUnitId = nRuleId; 31 | NewFileRule.uVerifyVar = (short int) -1; 32 | 33 | return NewFileRule; 34 | } 35 | 36 | sFileRule CGame_MVC2_P::GetNextRule() 37 | { 38 | 39 | 40 | sFileRule NewFileRule = GetRule(uRuleCtr); 41 | 42 | uRuleCtr++; 43 | 44 | if(uRuleCtr >= MVC2_D_NUMUNIT) 45 | { 46 | uRuleCtr = 0xFF; 47 | } 48 | 49 | return NewFileRule; 50 | } -------------------------------------------------------------------------------- /lkg/2014-12-26/Game_MVC2_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_MVC2_D.h" 3 | 4 | class CGame_MVC2_P : 5 | public CGame_MVC2_D 6 | { 7 | public: 8 | CGame_MVC2_P(void); 9 | ~CGame_MVC2_P(void); 10 | 11 | //Static functions 12 | static UINT8 uRuleCtr; 13 | 14 | static UINT8 GetRuleCtr(){return uRuleCtr;}; 15 | static void ResetRuleCtr(){uRuleCtr = 0;}; 16 | 17 | static sFileRule GetNextRule(); 18 | static sFileRule GetRule(int nRuleId); 19 | }; 20 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game_MVC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "MVC_A_DEF.h" 4 | 5 | 6 | class CGame_MVC_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_MVC_A(void); 28 | ~CGame_MVC_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | static int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game_SFA3_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SFA3_A_DEF.h" 4 | 5 | 6 | class CGame_SFA3_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SFA3_A(void); 28 | ~CGame_SFA3_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/2014-12-26/Game_SSF2T_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SSF2T_A_DEF.h" 4 | 5 | 6 | class CGame_SSF2T_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SSF2T_A(void); 28 | ~CGame_SSF2T_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | static int GetPalCt(int nUnitId); 41 | 42 | static void LoadExtraFile(); 43 | 44 | //Normal functions 45 | CDescTree * GetMainTree(); 46 | 47 | 48 | 49 | void CreateDefPal(sDescNode * srcNode, int nSepId); 50 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 51 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 52 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 53 | 54 | COLORREF * CreatePal(int nUnitId, int nPalId); 55 | 56 | void UpdatePalData(); 57 | 58 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 59 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 60 | 61 | 62 | }; 63 | -------------------------------------------------------------------------------- /lkg/2014-12-26/ImgDat.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_GAMES 4 4 | #define MAX_IMAGE 16 5 | 6 | 7 | 8 | struct sImgDef 9 | { 10 | UINT16 uImgWidth; 11 | UINT16 uImgHeight; 12 | 13 | UINT8 bCompressed; 14 | UINT32 uDataSize; 15 | UINT32 uThisImgLoc; 16 | UINT8 * pImgData; 17 | 18 | 19 | 20 | }; 21 | 22 | class CImgDat 23 | { 24 | private: 25 | sImgDef *** ppImgData; 26 | 27 | sImgDef * pLastImg[MAX_IMAGE]; 28 | int nLastImgCt; 29 | 30 | UINT8 uCurrUnitAmt; 31 | UINT8 uCurrImgAmt; 32 | 33 | UINT8 uReadGameFlag, uReadBPP; 34 | UINT16 uReadNumImgs; 35 | UINT32 uNextImgLoc; 36 | 37 | int nCurrGFlag; 38 | 39 | void PrepImageBuffer(UINT8 uUnitAmt, UINT8 uImgAmt); 40 | 41 | CFile ImgDatFile; 42 | 43 | BOOL bOnTheFly; 44 | 45 | public: 46 | CImgDat(void); 47 | ~CImgDat(void); 48 | 49 | BOOL LoadImage(CHAR * lpszLoadFile, UINT8 uGameFlag, UINT8 uUnitAmt, UINT16 uImgAmt = MAX_IMAGE, BOOL bLoadAll = TRUE); 50 | sImgDef * GetImageDef(UINT8 uUnitId, UINT8 uImgId); 51 | void FlushImageBuffer(); 52 | UINT8 * DecodeImg(UINT8 * pSrcImgData, UINT32 uiDataSz, UINT16 uiImgWidth, UINT16 uiImgHeight, UINT8 uiBPP); 53 | 54 | int GetCurrGFlag(){return nCurrGFlag;}; 55 | UINT8 * GetImgData(sImgDef * pCurrImg); 56 | 57 | void CloseImgFile(); 58 | void FlushLastImg(); 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/2014-12-26/ImgTicket.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sImgTicket 4 | { 5 | 6 | 7 | int nUnitId; 8 | int nImgId; 9 | 10 | int nXOffs; 11 | int nYOffs; 12 | 13 | sImgTicket * NextTicket; 14 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/Notes.txt: -------------------------------------------------------------------------------- 1 | Set gouki's offset correctly on SSF2T 2 | Get portraits for the new games 3 | test out each game's palettes 4 | add fixed up a past eerror between games and alpha flags 5 | 6 | -------------------------------------------------------------------------------- /lkg/2014-12-26/PalMod.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/2014-12-26/PalMod.aps -------------------------------------------------------------------------------- /lkg/2014-12-26/PalModDlg_Config.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "PalMod.h" 3 | #include "PalModDlg.h" 4 | 5 | #include "Game\Game_MVC2_D.h" 6 | #include "RegProc.h" 7 | 8 | 9 | void CPalModDlg::LoadSettings() 10 | { 11 | CRegProc RegSett(REG_MAIN); 12 | 13 | //Get main program data 14 | bGetCol = RegSett.main_bGetColor; 15 | CGame_MVC2_D::bAlphaTrans = RegSett.main_bAlphaTrans; 16 | bShow32 = RegSett.main_bShow32; 17 | CGameClass::bPostSetPalProc = RegSett.main_bProcSupp; 18 | bAutoSetCol = RegSett.bAutoSetCol; 19 | } 20 | 21 | void CPalModDlg::SaveSettings() 22 | { 23 | 24 | CRegProc RegSett; 25 | 26 | RegSett.main_bGetColor = bGetCol; 27 | RegSett.main_bAlphaTrans = CGame_MVC2_D::bAlphaTrans; 28 | RegSett.main_bShow32 = bShow32; 29 | RegSett.main_bProcSupp = CGameClass::bPostSetPalProc;; 30 | RegSett.bAutoSetCol = bAutoSetCol; 31 | 32 | RegSett.SaveReg(REG_MAIN); 33 | 34 | } -------------------------------------------------------------------------------- /lkg/2014-12-26/PalModDlg_Debug.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "PalMod.h" 3 | #include "PalModDlg.h" 4 | 5 | #include "Game\Game_MVC2_D.h" 6 | 7 | void CPalModDlg::OnBnClickedBEidrian2() 8 | { 9 | // TODO: Add your control notification handler code here 10 | 11 | UpdateData(); 12 | 13 | if(bRGB) 14 | { 15 | 16 | ((CGame_MVC2_D *)GetHost()->GetCurrGame())->ForEidrian(0, 17 | RGB( 18 | (int)round(m_RHSlider.GetPos()*nRMul), 19 | (int)round(m_GSSlider.GetPos()*nGMul), 20 | (int)round(m_BLSlider.GetPos()*nBMul)) | (UINT32)((m_ASlider.GetPos() * 17) << 24)); 21 | 22 | } 23 | 24 | UpdateData(FALSE); 25 | } 26 | 27 | void CPalModDlg::OnBnClickedBEidrian1() 28 | { 29 | // TODO: Add your control notification handler code here 30 | 31 | ((CGame_MVC2_D *)GetHost()->GetCurrGame())->ForEidrian(1); 32 | } 33 | -------------------------------------------------------------------------------- /lkg/2014-12-26/RegProc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define REG_MAIN 0 4 | #define REG_PREV 1 5 | #define REG_IMGOUT 2 6 | 7 | #define RECT_STRSZ 256 8 | 9 | #define BGBMPFILE "bgbmp.bmp" 10 | 11 | class CRegProc 12 | { 13 | public: 14 | CRegProc(int nSrcType = -1); 15 | ~CRegProc(void); 16 | 17 | void LoadReg(int src); 18 | void SaveReg(int src); 19 | 20 | //Main 21 | 22 | RECT main_szpos; 23 | 24 | //CString main_lastdirdir; 25 | //CString main_lastfiledir; 26 | 27 | BOOL main_bGetColor; 28 | BOOL main_bAlphaTrans; 29 | BOOL main_bShow32; 30 | BOOL main_bProcSupp; 31 | 32 | BOOL bAutoSetCol; 33 | 34 | //Preview 35 | 36 | RECT prev_szpos; 37 | 38 | COLORREF prev_bgcol; 39 | COLORREF prev_blinkcol; 40 | float prev_zoom; 41 | 42 | CHAR szPrevBGLoc[MAX_PATH]; 43 | int nBGXOffs; 44 | int nBGYOffs; 45 | BOOL bTileBG; 46 | BOOL bUseBGCol; 47 | 48 | //New Image 49 | 50 | RECT imgout_szpos; 51 | COLORREF imgout_bgcol; 52 | DWORD imgout_border; 53 | DWORD imgout_zoomindex; 54 | BOOL bTransPNG; 55 | 56 | 57 | 58 | }; 59 | 60 | CString RectToStr(RECT in_rect); 61 | RECT StrToRect(CString in_str); 62 | 63 | -------------------------------------------------------------------------------- /lkg/2014-12-26/SFA3_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFA3_A_NUMUNIT 28 4 | #define SFA3_A_PALSZ 16 5 | 6 | #define SFA3_A_IMGSTART 0x3B + 0x11 7 | 8 | const UINT16 SFA3_A_IMGREDIR[SFA3_A_NUMUNIT] = 9 | { 10 | 0x00, 11 | 0x27, 12 | 0x1E, 13 | 0x21, 14 | SFA3_A_IMGSTART + 0x00, 15 | SFA3_A_IMGSTART + 0x01, 16 | SFA3_A_IMGSTART + 0x02, 17 | SFA3_A_IMGSTART + 0x03, 18 | SFA3_A_IMGSTART + 0x04, 19 | SFA3_A_IMGSTART + 0x05, 20 | 0x26, 21 | SFA3_A_IMGSTART + 0x06, 22 | 0x23, 23 | 0x22, 24 | SFA3_A_IMGSTART + 0x07, 25 | 0x25, 26 | 0x01, 27 | SFA3_A_IMGSTART + 0x08, 28 | SFA3_A_IMGSTART + 0x09, 29 | 0x24, 30 | SFA3_A_IMGSTART + 0x0A, 31 | SFA3_A_IMGSTART + 0x0B, 32 | SFA3_A_IMGSTART + 0x0C, 33 | SFA3_A_IMGSTART + 0x0D, 34 | SFA3_A_IMGSTART + 0x0E, 35 | SFA3_A_IMGSTART + 0x0F, 36 | SFA3_A_IMGSTART + 0x10, 37 | SFA3_A_IMGSTART + 0x11, 38 | 39 | }; 40 | 41 | const CHAR SFA3_A_UNITDESC[SFA3_A_NUMUNIT][16] = 42 | { 43 | "Ryu", 44 | "Ken", 45 | "Gouki", 46 | "Charlie", 47 | "Chun-Li", 48 | "Adon", 49 | "Sodom", 50 | "Guy", 51 | "Birdie", 52 | "Rose", 53 | "M. Bison", 54 | "Sagat", 55 | "Dan", 56 | "Sakura", 57 | "Rolento", 58 | "Dhalsim", 59 | "Zangief", 60 | "Gen", 61 | "Balrog", 62 | "Cammy", 63 | "E. Honda", 64 | "Blanka", 65 | "R. Mika", 66 | "Cody", 67 | "Vega", 68 | "Karin", 69 | "Juni", 70 | "Juli" 71 | 72 | 73 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/SFIII3_D_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFIII3_D_NUMUNIT 0x14 4 | #define SFIII3_D_PALSZ 64 5 | 6 | const char SFIII3_D_UNITDESC[SFIII3_D_NUMUNIT][16] = 7 | { 8 | //"Gill", //0x 9 | "Alex", //0x00 10 | "Ryu", //0x01 11 | "Yun", //0x02 12 | "Dudley", //0x03 13 | "Necro", //0x04 14 | "Hugo", //0x05 15 | "Ibuki", //0x06 16 | "Elena", //0x07 17 | "Oro", //0x08 18 | "Yang", //0x09 19 | "Ken", //0x0A 20 | "Sean", //0x0B 21 | "Urien", //0x0C 22 | "Gouki", //0x0D 23 | "Shin-Gouki", //0x0E 24 | "Chun-Li", //0x0F 25 | "Makoto", //0x10 26 | "Q", //0x11 27 | "Twelve", //0x12 28 | "Remy" //0x13 29 | }; 30 | 31 | const UINT8 SFIII3_D_UNITSORT[SFIII3_D_NUMUNIT] = //Plus 1 for the extra palettes 32 | { 33 | 0x00, 34 | 0x0F, 35 | 0x03, 36 | 0x07, 37 | 0x0D, 38 | 0x05, 39 | 0x06, 40 | 0x0A, 41 | 0x10, 42 | 0x04, 43 | 0x08, 44 | 0x11, 45 | 0x13, 46 | 0x01, 47 | 0x0B, 48 | 0x0E, 49 | 0x12, 50 | 0x0C, 51 | 0x09, 52 | 0x02 53 | 54 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/SSF2T_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SSF2T_A_NUMUNIT 17 4 | #define SSF2T_A_PALSZ 16 5 | 6 | #define SSF2T_A_IMGOFFSET 0x3B 7 | 8 | const CHAR SSF2T_A_UNITDESC[SSF2T_A_NUMUNIT][16] = 9 | { 10 | "Ryu", 11 | "E-Honda", 12 | "Blanka", 13 | "Guile", 14 | "Ken", 15 | "Chun-Li", 16 | "Zangief", 17 | "Dhalsim", 18 | "M.Bison", 19 | "Sagat", 20 | "Balrog", 21 | "Vega", 22 | "Cammy", 23 | "T-Hawk", 24 | "Fei Long", 25 | "Dee Jay", 26 | "Gouki" 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /lkg/2014-12-26/SettDlg.cpp: -------------------------------------------------------------------------------- 1 | // SettDlg.cpp : implementation file 2 | // 3 | 4 | #include "stdafx.h" 5 | #include "PalMod.h" 6 | #include "SettDlg.h" 7 | 8 | 9 | // CSettDlg dialog 10 | 11 | IMPLEMENT_DYNAMIC(CSettDlg, CDialog) 12 | 13 | CSettDlg::CSettDlg(CWnd* pParent /*=NULL*/) 14 | : CDialog(CSettDlg::IDD, pParent) 15 | , m_bAlphaTrans(FALSE) 16 | , m_bUpdSupp(FALSE) 17 | { 18 | 19 | } 20 | 21 | CSettDlg::~CSettDlg() 22 | { 23 | } 24 | 25 | void CSettDlg::DoDataExchange(CDataExchange* pDX) 26 | { 27 | CDialog::DoDataExchange(pDX); 28 | DDX_Check(pDX, IDC_CALPHATRANS, m_bAlphaTrans); 29 | DDX_Check(pDX, IDC_CUPDSUPP, m_bUpdSupp); 30 | } 31 | 32 | 33 | BEGIN_MESSAGE_MAP(CSettDlg, CDialog) 34 | END_MESSAGE_MAP() 35 | 36 | 37 | // CSettDlg message handlers 38 | -------------------------------------------------------------------------------- /lkg/2014-12-26/SettDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | // CSettDlg dialog 5 | 6 | class CSettDlg : public CDialog 7 | { 8 | DECLARE_DYNAMIC(CSettDlg) 9 | 10 | public: 11 | CSettDlg(CWnd* pParent = NULL); // standard constructor 12 | virtual ~CSettDlg(); 13 | 14 | // Dialog Data 15 | enum { IDD = IDD_SETT_DIALOG }; 16 | 17 | protected: 18 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 19 | 20 | DECLARE_MESSAGE_MAP() 21 | public: 22 | BOOL m_bAlphaTrans; 23 | BOOL m_bUpdSupp; 24 | }; 25 | -------------------------------------------------------------------------------- /lkg/2014-12-26/ShellSort.h: -------------------------------------------------------------------------------- 1 | //#pragma once 2 | 3 | void ShellSort(double * fpSrc, double * fpExtra1, double * fpExtra2, int * pPalette, UINT16 * pTable, int max); 4 | void ccRGBtoXYZ(double r, double g, double b, double* x, double* y, double* z); 5 | void SpecialSort(double * fpSrc, int * pPalette, UINT16 * pTable, int nSize); 6 | -------------------------------------------------------------------------------- /lkg/2014-12-26/XMVSF_A_DEF.h: -------------------------------------------------------------------------------- 1 | #define XMVSF_A_NUMUNIT 19 2 | #define XMVSF_A_PALSZ 16 3 | #define XMVSF_A_IMGSTART (0x3B + 0x11 + 0x11) //MVC2, then SSF2T, then SFA3 4 | 5 | 6 | const UINT8 XMVSF_A_IMGREDIR[XMVSF_A_NUMUNIT] = 7 | { 8 | 0x07, 9 | 0x06, 10 | 0x2A, 11 | 0x0A, 12 | 0x28, 13 | 0x2B, 14 | 0x29, 15 | 0x2C, 16 | XMVSF_A_IMGSTART, 17 | 0x00, 18 | 0x27, 19 | 0x1B, 20 | 0x25, 21 | 0x01, 22 | 0x26, 23 | 0x1E, 24 | 0x21, 25 | 0x24, 26 | 0x3B + 0x11 // Chun Li's image in SFA3 27 | 28 | }; 29 | 30 | const CHAR XMVSF_A_UNITDESC[XMVSF_A_NUMUNIT][16] = 31 | { 32 | "Wolverine", 33 | "Cyclops", 34 | "Storm", 35 | "Rogue", 36 | "Gambit", 37 | "Sabretooth", 38 | "Juggernaut", 39 | "Magneto", 40 | "Apocalypse", 41 | "Ryu", 42 | "Ken", 43 | "Chun-Li", 44 | "Dhalsim", 45 | "Zangief", 46 | "M. Bison", 47 | "Gouki", 48 | "Charlie", 49 | "Cammy", 50 | "Chun-Li (SFA)" 51 | }; 52 | 53 | const UINT32 XMVSF_A_UNITLOC[XMVSF_A_NUMUNIT + 1] = 54 | { 55 | 0x14D7C, 56 | 0x14E3C, 57 | 0x14FBC, 58 | 0x1531C, 59 | 0x153DC, //GAMBIT 60 | 0x1549C, 61 | 0x1559C, 62 | 0x156BC, 63 | 0x157DC, 64 | 0x1589C, 65 | 0x15A1C, 66 | 0x15B9C, 67 | 0x15C5C, 68 | 0x15D5C, 69 | 0x15FDC, 70 | 0x1609C, 71 | 0x1621C, 72 | 0x1639C, 73 | 0x164BC, 74 | 0x1657C, 75 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/newgamedummy/Game_MVC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SSF2T_A_DEF.h" 4 | 5 | 6 | class CGame_SSF2T_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SSF2T_A(void); 28 | ~CGame_SSF2T_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/2014-12-26/newgamedummy/MVC_A_DEF.h: -------------------------------------------------------------------------------- 1 | #define SSF2T_A_NUMUNIT 17 2 | #define SSF2T_A_PALSZ 16 3 | 4 | const CHAR SSF2T_A_UNITDESC[SSF2T_A_NUMUNIT][16] = 5 | { 6 | "Ryu", 7 | "E-Honda", 8 | "Blanka", 9 | "Guile", 10 | "Ken", 11 | "Chun-Li", 12 | "Zangief", 13 | "Dhalsim", 14 | "M.Bison", 15 | "Sagat", 16 | "Balrog", 17 | "Vega", 18 | "Cammy", 19 | "T-Hawk", 20 | "Fei Long", 21 | "Dee Jay", 22 | "Gouki" 23 | }; -------------------------------------------------------------------------------- /lkg/2014-12-26/res/PalMod.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/2014-12-26/res/PalMod.ico -------------------------------------------------------------------------------- /lkg/2014-12-26/res/PalMod.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // PalMod.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /lkg/2014-12-26/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // PalMod.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | 8 | -------------------------------------------------------------------------------- /lkg/2014-12-26/targetver.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | // The following macros define the minimum required platform. The minimum required platform 5 | // is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 6 | // your application. The macros work by enabling all features available on platform versions up to and 7 | // including the version specified. 8 | 9 | // Modify the following defines if you have to target a platform prior to the ones specified below. 10 | // Refer to MSDN for the latest info on corresponding values for different platforms. 11 | #ifndef WINVER // Specifies that the minimum required platform is Windows Vista. 12 | #define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. 13 | #endif 14 | 15 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. 16 | #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. 17 | #endif 18 | 19 | #ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. 20 | #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. 21 | #endif 22 | 23 | #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. 24 | #define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. 25 | #endif 26 | 27 | -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.exe.embed.manifest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.exe.embed.manifest -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.exe.embed.manifest.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.exe.embed.manifest.res -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.ilk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.ilk -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.log: -------------------------------------------------------------------------------- 1 | ColorScale.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/SAFESEH' specification 2 | PalMod.vcxproj -> C:\Users\preppy\Desktop\PalMod\drew\palmod2014\Debug\PalMod.exe 3 | -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.pdb -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.res -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/PalMod.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v142:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0 2 | Debug|Win32|C:\Users\preppy\Desktop\PalMod\drew\palmod2014\| 3 | -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/rc.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/rc.command.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/rc.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/rc.read.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod.tlog/rc.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod.tlog/rc.write.1.tlog -------------------------------------------------------------------------------- /lkg/gitversion/Debug/PalMod_manifest.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/PalMod_manifest.rc -------------------------------------------------------------------------------- /lkg/gitversion/Debug/vc142.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/vc142.idb -------------------------------------------------------------------------------- /lkg/gitversion/Debug/vc142.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/Debug/vc142.pdb -------------------------------------------------------------------------------- /lkg/gitversion/Default.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_DESC 48 4 | #define MAX_FILENAME 16 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lkg/gitversion/DescTree.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Default.h" 3 | 4 | #define DESC_NODETYPE_TREE 0 5 | #define DESC_NODETYPE_NODE 1 6 | 7 | #define DESC_ENDGET -1 8 | 9 | //Description tree definition 10 | 11 | struct sDescNode 12 | { 13 | CHAR szDesc[MAX_DESC]; 14 | 15 | UINT8 uUnitId; 16 | UINT16 uPalId; 17 | }; 18 | 19 | struct sDescTreeNode 20 | { 21 | CHAR szDesc[MAX_DESC]; 22 | 23 | UINT8 uChildType; 24 | void * ChildNodes; 25 | UINT16 uChildAmt; 26 | }; 27 | 28 | class CDescTree 29 | { 30 | private: 31 | sDescTreeNode * RootTree; 32 | public: 33 | CDescTree(sDescTreeNode * InputTree = NULL); 34 | ~CDescTree(void); 35 | 36 | void SetRootTree(sDescTreeNode * NewTree){ RootTree = NewTree;}; 37 | void FlushTree(sDescTreeNode * CurrTree); 38 | void FlushRootTree(); 39 | sDescNode * GetDescNode(int nChildId, ...); 40 | sDescTreeNode * GetDescTree(int nChildId, ...); 41 | }; 42 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/Default.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_DESC 48 4 | #define MAX_FILENAME 16 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/DescTree.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Default.h" 3 | 4 | #define DESC_NODETYPE_TREE 0 5 | #define DESC_NODETYPE_NODE 1 6 | 7 | #define DESC_ENDGET -1 8 | 9 | //Description tree definition 10 | 11 | struct sDescNode 12 | { 13 | CHAR szDesc[MAX_DESC]; 14 | 15 | UINT8 uUnitId; 16 | UINT16 uPalId; 17 | }; 18 | 19 | struct sDescTreeNode 20 | { 21 | CHAR szDesc[MAX_DESC]; 22 | 23 | UINT8 uChildType; 24 | void * ChildNodes; 25 | UINT16 uChildAmt; 26 | }; 27 | 28 | class CDescTree 29 | { 30 | private: 31 | sDescTreeNode * RootTree; 32 | public: 33 | CDescTree(sDescTreeNode * InputTree = NULL); 34 | ~CDescTree(void); 35 | 36 | void SetRootTree(sDescTreeNode * NewTree){ RootTree = NewTree;}; 37 | void FlushTree(sDescTreeNode * CurrTree); 38 | void FlushRootTree(); 39 | sDescNode * GetDescNode(int nChildId, ...); 40 | sDescTreeNode * GetDescTree(int nChildId, ...); 41 | }; 42 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/GameDef.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //A = Arcade 4 | //X = XBox 5 | //D = Dreamcast 6 | //P = Playstation 2 7 | 8 | //Game Definitions 9 | #define NUM_GAMES 8 10 | 11 | 12 | 13 | #define MVC2_D 0 14 | #define SFIII3_A 1 15 | #define MVC2_P 2 16 | #define SSF2T_A 3 17 | #define SFA3_A 4 18 | #define XMVSF_A 5 19 | #define MVC_A 6 20 | #define SFIII3_D 7 21 | 22 | //Images 23 | 24 | #define IMG4 0 //Image Game Flag 25 | #define IMG5 1 //Image Game Flag 26 | 27 | //Size of image per image game flag 28 | const int IMGAMT[2] = 29 | { 30 | 0x3B + 0x11, 31 | 0x14 32 | }; 33 | 34 | //Display types (used for image out) 35 | enum eDispType 36 | { 37 | DISP_DEF, 38 | DISP_ALT 39 | }; 40 | 41 | //Basic button labels 42 | #define BUTTON6 6 43 | #define BUTTON7 7 44 | 45 | const CHAR DEF_BUTTONLABEL6[6][3] = 46 | { 47 | "LP", "MP", "HP", "LK", "MK", "HK" 48 | }; 49 | 50 | const CHAR DEF_BUTTONLABEL6ALT[6][3] = 51 | { 52 | "LP", "LK", "HP", "HK", "A1", "A2" 53 | }; 54 | 55 | const CHAR DEF_BUTTONLABEL7[7][3] = 56 | { 57 | "LP", "MP", "HP", "LK", "MK", "HK", "EX" 58 | }; 59 | 60 | #define DESC2 2 61 | #define DESC6 6 62 | //Primary / Secondary descriptions 63 | 64 | const CHAR DEF_DESCPRISEC[3][16] = 65 | { 66 | "Primary", "Secondary" 67 | }; 68 | 69 | //Street Fighter Alpha 3 descriptions 70 | const CHAR DEF_DESCSFA3[6][16] = 71 | { 72 | "Primary", "Secondary", "Primary", "Secondary", "Primary", "Secondary" 73 | }; -------------------------------------------------------------------------------- /lkg/gitversion/Game/GameLoad.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "GameClass.h" 4 | 5 | class CGameLoad 6 | { 7 | private: 8 | BOOL SetGame(int nGameFlag); 9 | 10 | UINT8 (*GetRuleCtr)(void); 11 | void (*ResetRuleCtr)(void); 12 | sFileRule (*GetNextRule)(void); 13 | sFileRule (*GetRule)(int); 14 | CGameClass * CreateGame(int nGameFlag); 15 | 16 | CString szLoadSaveStr; 17 | 18 | int nSaveLoadCount; 19 | int nSaveLoadSucc; 20 | int nSaveLoadErr; 21 | public: 22 | CGameLoad(void); 23 | ~CGameLoad(void); 24 | 25 | CGameClass * LoadFile(int nGameFlag, CHAR * szLoadFile); 26 | CGameClass * LoadDir(int nGameFlag, CHAR * szLoadDir); 27 | void SaveGame(CGameClass * CurrGame); 28 | 29 | int GetErrCt(){return nSaveLoadErr;}; 30 | CString GetLoadSaveStr(){return szLoadSaveStr;}; 31 | }; 32 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/Game_MVC2_P.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_MVC2_P.h" 3 | 4 | UINT8 CGame_MVC2_P::uRuleCtr = 0; 5 | 6 | 7 | CGame_MVC2_P::CGame_MVC2_P(void) 8 | { 9 | //CGame_MVC2_D(); 10 | 11 | nGameFlag = MVC2_P; 12 | } 13 | 14 | CGame_MVC2_P::~CGame_MVC2_P(void) 15 | { 16 | //~CGame_MVC2_D(); 17 | } 18 | 19 | 20 | 21 | 22 | 23 | sFileRule CGame_MVC2_P::GetRule(int nRuleId) 24 | { 25 | sFileRule NewFileRule; 26 | 27 | nRuleId = (nRuleId & 0xFF00) == 0xFF00 ? (nRuleId & 0x00FF) : MVC2_D_UNITSORT[nRuleId]; 28 | sprintf_s(NewFileRule.szFileName, MAX_FILENAME, "PL%02XPAK.BIN", nRuleId); 29 | 30 | NewFileRule.uUnitId = nRuleId; 31 | NewFileRule.uVerifyVar = (short int) -1; 32 | 33 | return NewFileRule; 34 | } 35 | 36 | sFileRule CGame_MVC2_P::GetNextRule() 37 | { 38 | 39 | 40 | sFileRule NewFileRule = GetRule(uRuleCtr); 41 | 42 | uRuleCtr++; 43 | 44 | if(uRuleCtr >= MVC2_D_NUMUNIT) 45 | { 46 | uRuleCtr = 0xFF; 47 | } 48 | 49 | return NewFileRule; 50 | } -------------------------------------------------------------------------------- /lkg/gitversion/Game/Game_MVC2_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_MVC2_D.h" 3 | 4 | class CGame_MVC2_P : 5 | public CGame_MVC2_D 6 | { 7 | public: 8 | CGame_MVC2_P(void); 9 | ~CGame_MVC2_P(void); 10 | 11 | //Static functions 12 | static UINT8 uRuleCtr; 13 | 14 | static UINT8 GetRuleCtr(){return uRuleCtr;}; 15 | static void ResetRuleCtr(){uRuleCtr = 0;}; 16 | 17 | static sFileRule GetNextRule(); 18 | static sFileRule GetRule(int nRuleId); 19 | }; 20 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/Game_MVC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "MVC_A_DEF.h" 4 | 5 | 6 | class CGame_MVC_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_MVC_A(void); 28 | ~CGame_MVC_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | static int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/Game_SFA3_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SFA3_A_DEF.h" 4 | 5 | 6 | class CGame_SFA3_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SFA3_A(void); 28 | ~CGame_SFA3_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/Game_SSF2T_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SSF2T_A_DEF.h" 4 | 5 | 6 | class CGame_SSF2T_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SSF2T_A(void); 28 | ~CGame_SSF2T_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | static int GetPalCt(int nUnitId); 41 | 42 | static void LoadExtraFile(); 43 | 44 | //Normal functions 45 | CDescTree * GetMainTree(); 46 | 47 | 48 | 49 | void CreateDefPal(sDescNode * srcNode, int nSepId); 50 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 51 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 52 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 53 | 54 | COLORREF * CreatePal(int nUnitId, int nPalId); 55 | 56 | void UpdatePalData(); 57 | 58 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 59 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 60 | 61 | 62 | }; 63 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/ImgTicket.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sImgTicket 4 | { 5 | 6 | 7 | int nUnitId; 8 | int nImgId; 9 | 10 | int nXOffs; 11 | int nYOffs; 12 | 13 | sImgTicket * NextTicket; 14 | }; -------------------------------------------------------------------------------- /lkg/gitversion/Game/SFA3_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFA3_A_NUMUNIT 28 4 | #define SFA3_A_PALSZ 16 5 | 6 | #define SFA3_A_IMGSTART 0x3B + 0x11 7 | 8 | const UINT16 SFA3_A_IMGREDIR[SFA3_A_NUMUNIT] = 9 | { 10 | 0x00, 11 | 0x27, 12 | 0x1E, 13 | 0x21, 14 | SFA3_A_IMGSTART + 0x00, 15 | SFA3_A_IMGSTART + 0x01, 16 | SFA3_A_IMGSTART + 0x02, 17 | SFA3_A_IMGSTART + 0x03, 18 | SFA3_A_IMGSTART + 0x04, 19 | SFA3_A_IMGSTART + 0x05, 20 | 0x26, 21 | SFA3_A_IMGSTART + 0x06, 22 | 0x23, 23 | 0x22, 24 | SFA3_A_IMGSTART + 0x07, 25 | 0x25, 26 | 0x01, 27 | SFA3_A_IMGSTART + 0x08, 28 | SFA3_A_IMGSTART + 0x09, 29 | 0x24, 30 | SFA3_A_IMGSTART + 0x0A, 31 | SFA3_A_IMGSTART + 0x0B, 32 | SFA3_A_IMGSTART + 0x0C, 33 | SFA3_A_IMGSTART + 0x0D, 34 | SFA3_A_IMGSTART + 0x0E, 35 | SFA3_A_IMGSTART + 0x0F, 36 | SFA3_A_IMGSTART + 0x10, 37 | SFA3_A_IMGSTART + 0x11, 38 | 39 | }; 40 | 41 | const CHAR SFA3_A_UNITDESC[SFA3_A_NUMUNIT][16] = 42 | { 43 | "Ryu", 44 | "Ken", 45 | "Gouki", 46 | "Charlie", 47 | "Chun-Li", 48 | "Adon", 49 | "Sodom", 50 | "Guy", 51 | "Birdie", 52 | "Rose", 53 | "M. Bison", 54 | "Sagat", 55 | "Dan", 56 | "Sakura", 57 | "Rolento", 58 | "Dhalsim", 59 | "Zangief", 60 | "Gen", 61 | "Balrog", 62 | "Cammy", 63 | "E. Honda", 64 | "Blanka", 65 | "R. Mika", 66 | "Cody", 67 | "Vega", 68 | "Karin", 69 | "Juni", 70 | "Juli" 71 | 72 | 73 | }; -------------------------------------------------------------------------------- /lkg/gitversion/Game/SFIII3_D_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFIII3_D_NUMUNIT 0x14 4 | #define SFIII3_D_PALSZ 64 5 | 6 | const char SFIII3_D_UNITDESC[SFIII3_D_NUMUNIT][16] = 7 | { 8 | //"Gill", //0x 9 | "Alex", //0x00 10 | "Ryu", //0x01 11 | "Yun", //0x02 12 | "Dudley", //0x03 13 | "Necro", //0x04 14 | "Hugo", //0x05 15 | "Ibuki", //0x06 16 | "Elena", //0x07 17 | "Oro", //0x08 18 | "Yang", //0x09 19 | "Ken", //0x0A 20 | "Sean", //0x0B 21 | "Urien", //0x0C 22 | "Gouki", //0x0D 23 | "Shin-Gouki", //0x0E 24 | "Chun-Li", //0x0F 25 | "Makoto", //0x10 26 | "Q", //0x11 27 | "Twelve", //0x12 28 | "Remy" //0x13 29 | }; 30 | 31 | const UINT8 SFIII3_D_UNITSORT[SFIII3_D_NUMUNIT] = //Plus 1 for the extra palettes 32 | { 33 | 0x00, 34 | 0x0F, 35 | 0x03, 36 | 0x07, 37 | 0x0D, 38 | 0x05, 39 | 0x06, 40 | 0x0A, 41 | 0x10, 42 | 0x04, 43 | 0x08, 44 | 0x11, 45 | 0x13, 46 | 0x01, 47 | 0x0B, 48 | 0x0E, 49 | 0x12, 50 | 0x0C, 51 | 0x09, 52 | 0x02 53 | 54 | }; -------------------------------------------------------------------------------- /lkg/gitversion/Game/SSF2T_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SSF2T_A_NUMUNIT 17 4 | #define SSF2T_A_PALSZ 16 5 | 6 | #define SSF2T_A_IMGOFFSET 0x3B 7 | 8 | const CHAR SSF2T_A_UNITDESC[SSF2T_A_NUMUNIT][16] = 9 | { 10 | "Ryu", 11 | "E-Honda", 12 | "Blanka", 13 | "Guile", 14 | "Ken", 15 | "Chun-Li", 16 | "Zangief", 17 | "Dhalsim", 18 | "M.Bison", 19 | "Sagat", 20 | "Balrog", 21 | "Vega", 22 | "Cammy", 23 | "T-Hawk", 24 | "Fei Long", 25 | "Dee Jay", 26 | "Gouki" 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/ShellSort.h: -------------------------------------------------------------------------------- 1 | //#pragma once 2 | 3 | void ShellSort(double * fpSrc, double * fpExtra1, double * fpExtra2, int * pPalette, UINT16 * pTable, int max); 4 | void ccRGBtoXYZ(double r, double g, double b, double* x, double* y, double* z); 5 | void SpecialSort(double * fpSrc, int * pPalette, UINT16 * pTable, int nSize); 6 | -------------------------------------------------------------------------------- /lkg/gitversion/Game/XMVSF_A_DEF.h: -------------------------------------------------------------------------------- 1 | #define XMVSF_A_NUMUNIT 19 2 | #define XMVSF_A_PALSZ 16 3 | #define XMVSF_A_IMGSTART (0x3B + 0x11 + 0x11) //MVC2, then SSF2T, then SFA3 4 | 5 | 6 | const UINT8 XMVSF_A_IMGREDIR[XMVSF_A_NUMUNIT] = 7 | { 8 | 0x07, 9 | 0x06, 10 | 0x2A, 11 | 0x0A, 12 | 0x28, 13 | 0x2B, 14 | 0x29, 15 | 0x2C, 16 | XMVSF_A_IMGSTART, 17 | 0x00, 18 | 0x27, 19 | 0x1B, 20 | 0x25, 21 | 0x01, 22 | 0x26, 23 | 0x1E, 24 | 0x21, 25 | 0x24, 26 | 0x3B + 0x11 // Chun Li's image in SFA3 27 | 28 | }; 29 | 30 | const CHAR XMVSF_A_UNITDESC[XMVSF_A_NUMUNIT][16] = 31 | { 32 | "Wolverine", 33 | "Cyclops", 34 | "Storm", 35 | "Rogue", 36 | "Gambit", 37 | "Sabretooth", 38 | "Juggernaut", 39 | "Magneto", 40 | "Apocalypse", 41 | "Ryu", 42 | "Ken", 43 | "Chun-Li", 44 | "Dhalsim", 45 | "Zangief", 46 | "M. Bison", 47 | "Gouki", 48 | "Charlie", 49 | "Cammy", 50 | "Chun-Li (SFA)" 51 | }; 52 | 53 | const UINT32 XMVSF_A_UNITLOC[XMVSF_A_NUMUNIT + 1] = 54 | { 55 | 0x14D7C, 56 | 0x14E3C, 57 | 0x14FBC, 58 | 0x1531C, 59 | 0x153DC, //GAMBIT 60 | 0x1549C, 61 | 0x1559C, 62 | 0x156BC, 63 | 0x157DC, 64 | 0x1589C, 65 | 0x15A1C, 66 | 0x15B9C, 67 | 0x15C5C, 68 | 0x15D5C, 69 | 0x15FDC, 70 | 0x1609C, 71 | 0x1621C, 72 | 0x1639C, 73 | 0x164BC, 74 | 0x1657C, 75 | }; -------------------------------------------------------------------------------- /lkg/gitversion/GameDef.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //A = Arcade 4 | //X = XBox 5 | //D = Dreamcast 6 | //P = Playstation 2 7 | 8 | //Game Definitions 9 | #define NUM_GAMES 8 10 | 11 | 12 | 13 | #define MVC2_D 0 14 | #define SFIII3_A 1 15 | #define MVC2_P 2 16 | #define SSF2T_A 3 17 | #define SFA3_A 4 18 | #define XMVSF_A 5 19 | #define MVC_A 6 20 | #define SFIII3_D 7 21 | 22 | //Images 23 | 24 | #define IMG4 0 //Image Game Flag 25 | #define IMG5 1 //Image Game Flag 26 | 27 | //Size of image per image game flag 28 | const int IMGAMT[2] = 29 | { 30 | 0x3B + 0x11, 31 | 0x14 32 | }; 33 | 34 | //Display types (used for image out) 35 | enum eDispType 36 | { 37 | DISP_DEF, 38 | DISP_ALT 39 | }; 40 | 41 | //Basic button labels 42 | #define BUTTON6 6 43 | #define BUTTON7 7 44 | 45 | const CHAR DEF_BUTTONLABEL6[6][3] = 46 | { 47 | "LP", "MP", "HP", "LK", "MK", "HK" 48 | }; 49 | 50 | const CHAR DEF_BUTTONLABEL6ALT[6][3] = 51 | { 52 | "LP", "LK", "HP", "HK", "A1", "A2" 53 | }; 54 | 55 | const CHAR DEF_BUTTONLABEL7[7][3] = 56 | { 57 | "LP", "MP", "HP", "LK", "MK", "HK", "EX" 58 | }; 59 | 60 | #define DESC2 2 61 | #define DESC6 6 62 | //Primary / Secondary descriptions 63 | 64 | const CHAR DEF_DESCPRISEC[3][16] = 65 | { 66 | "Primary", "Secondary" 67 | }; 68 | 69 | //Street Fighter Alpha 3 descriptions 70 | const CHAR DEF_DESCSFA3[6][16] = 71 | { 72 | "Primary", "Secondary", "Primary", "Secondary", "Primary", "Secondary" 73 | }; -------------------------------------------------------------------------------- /lkg/gitversion/GameLoad.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "GameClass.h" 4 | 5 | class CGameLoad 6 | { 7 | private: 8 | BOOL SetGame(int nGameFlag); 9 | 10 | UINT8 (*GetRuleCtr)(void); 11 | void (*ResetRuleCtr)(void); 12 | sFileRule (*GetNextRule)(void); 13 | sFileRule (*GetRule)(int); 14 | CGameClass * CreateGame(int nGameFlag); 15 | 16 | CString szLoadSaveStr; 17 | 18 | int nSaveLoadCount; 19 | int nSaveLoadSucc; 20 | int nSaveLoadErr; 21 | public: 22 | CGameLoad(void); 23 | ~CGameLoad(void); 24 | 25 | CGameClass * LoadFile(int nGameFlag, CHAR * szLoadFile); 26 | CGameClass * LoadDir(int nGameFlag, CHAR * szLoadDir); 27 | void SaveGame(CGameClass * CurrGame); 28 | 29 | int GetErrCt(){return nSaveLoadErr;}; 30 | CString GetLoadSaveStr(){return szLoadSaveStr;}; 31 | }; 32 | -------------------------------------------------------------------------------- /lkg/gitversion/Game_MVC2_P.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_MVC2_P.h" 3 | 4 | UINT8 CGame_MVC2_P::uRuleCtr = 0; 5 | 6 | 7 | CGame_MVC2_P::CGame_MVC2_P(void) 8 | { 9 | //CGame_MVC2_D(); 10 | 11 | nGameFlag = MVC2_P; 12 | } 13 | 14 | CGame_MVC2_P::~CGame_MVC2_P(void) 15 | { 16 | //~CGame_MVC2_D(); 17 | } 18 | 19 | 20 | 21 | 22 | 23 | sFileRule CGame_MVC2_P::GetRule(int nRuleId) 24 | { 25 | sFileRule NewFileRule; 26 | 27 | nRuleId = (nRuleId & 0xFF00) == 0xFF00 ? (nRuleId & 0x00FF) : MVC2_D_UNITSORT[nRuleId]; 28 | sprintf_s(NewFileRule.szFileName, MAX_FILENAME, "PL%02XPAK.BIN", nRuleId); 29 | 30 | NewFileRule.uUnitId = nRuleId; 31 | NewFileRule.uVerifyVar = (short int) -1; 32 | 33 | return NewFileRule; 34 | } 35 | 36 | sFileRule CGame_MVC2_P::GetNextRule() 37 | { 38 | 39 | 40 | sFileRule NewFileRule = GetRule(uRuleCtr); 41 | 42 | uRuleCtr++; 43 | 44 | if(uRuleCtr >= MVC2_D_NUMUNIT) 45 | { 46 | uRuleCtr = 0xFF; 47 | } 48 | 49 | return NewFileRule; 50 | } -------------------------------------------------------------------------------- /lkg/gitversion/Game_MVC2_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_MVC2_D.h" 3 | 4 | class CGame_MVC2_P : 5 | public CGame_MVC2_D 6 | { 7 | public: 8 | CGame_MVC2_P(void); 9 | ~CGame_MVC2_P(void); 10 | 11 | //Static functions 12 | static UINT8 uRuleCtr; 13 | 14 | static UINT8 GetRuleCtr(){return uRuleCtr;}; 15 | static void ResetRuleCtr(){uRuleCtr = 0;}; 16 | 17 | static sFileRule GetNextRule(); 18 | static sFileRule GetRule(int nRuleId); 19 | }; 20 | -------------------------------------------------------------------------------- /lkg/gitversion/Game_MVC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "MVC_A_DEF.h" 4 | 5 | 6 | class CGame_MVC_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_MVC_A(void); 28 | ~CGame_MVC_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | static int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/gitversion/Game_SFA3_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SFA3_A_DEF.h" 4 | 5 | 6 | class CGame_SFA3_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SFA3_A(void); 28 | ~CGame_SFA3_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/gitversion/Game_SSF2T_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SSF2T_A_DEF.h" 4 | 5 | 6 | class CGame_SSF2T_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SSF2T_A(void); 28 | ~CGame_SSF2T_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | static int GetPalCt(int nUnitId); 41 | 42 | static void LoadExtraFile(); 43 | 44 | //Normal functions 45 | CDescTree * GetMainTree(); 46 | 47 | 48 | 49 | void CreateDefPal(sDescNode * srcNode, int nSepId); 50 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 51 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 52 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 53 | 54 | COLORREF * CreatePal(int nUnitId, int nPalId); 55 | 56 | void UpdatePalData(); 57 | 58 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 59 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 60 | 61 | 62 | }; 63 | -------------------------------------------------------------------------------- /lkg/gitversion/ImgDat.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_GAMES 4 4 | #define MAX_IMAGE 16 5 | 6 | 7 | 8 | struct sImgDef 9 | { 10 | UINT16 uImgWidth; 11 | UINT16 uImgHeight; 12 | 13 | UINT8 bCompressed; 14 | UINT32 uDataSize; 15 | UINT32 uThisImgLoc; 16 | UINT8 * pImgData; 17 | 18 | 19 | 20 | }; 21 | 22 | class CImgDat 23 | { 24 | private: 25 | sImgDef *** ppImgData; 26 | 27 | sImgDef * pLastImg[MAX_IMAGE]; 28 | int nLastImgCt; 29 | 30 | UINT8 uCurrUnitAmt; 31 | UINT8 uCurrImgAmt; 32 | 33 | UINT8 uReadGameFlag, uReadBPP; 34 | UINT16 uReadNumImgs; 35 | UINT32 uNextImgLoc; 36 | 37 | int nCurrGFlag; 38 | 39 | void PrepImageBuffer(UINT8 uUnitAmt, UINT8 uImgAmt); 40 | 41 | CFile ImgDatFile; 42 | 43 | BOOL bOnTheFly; 44 | 45 | public: 46 | CImgDat(void); 47 | ~CImgDat(void); 48 | 49 | BOOL LoadImage(CHAR * lpszLoadFile, UINT8 uGameFlag, UINT8 uUnitAmt, UINT16 uImgAmt = MAX_IMAGE, BOOL bLoadAll = TRUE); 50 | sImgDef * GetImageDef(UINT8 uUnitId, UINT8 uImgId); 51 | void FlushImageBuffer(); 52 | UINT8 * DecodeImg(UINT8 * pSrcImgData, UINT32 uiDataSz, UINT16 uiImgWidth, UINT16 uiImgHeight, UINT8 uiBPP); 53 | 54 | int GetCurrGFlag(){return nCurrGFlag;}; 55 | UINT8 * GetImgData(sImgDef * pCurrImg); 56 | 57 | void CloseImgFile(); 58 | void FlushLastImg(); 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/gitversion/ImgTicket.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sImgTicket 4 | { 5 | 6 | 7 | int nUnitId; 8 | int nImgId; 9 | 10 | int nXOffs; 11 | int nYOffs; 12 | 13 | sImgTicket * NextTicket; 14 | }; -------------------------------------------------------------------------------- /lkg/gitversion/Notes.txt: -------------------------------------------------------------------------------- 1 | Set gouki's offset correctly on SSF2T 2 | Get portraits for the new games 3 | test out each game's palettes 4 | add fixed up a past eerror between games and alpha flags 5 | 6 | -------------------------------------------------------------------------------- /lkg/gitversion/PalMod.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/PalMod.aps -------------------------------------------------------------------------------- /lkg/gitversion/PalMod.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /lkg/gitversion/PalModDlg_Config.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "PalMod.h" 3 | #include "PalModDlg.h" 4 | 5 | #include "Game\Game_MVC2_D.h" 6 | #include "RegProc.h" 7 | 8 | 9 | void CPalModDlg::LoadSettings() 10 | { 11 | CRegProc RegSett(REG_MAIN); 12 | 13 | //Get main program data 14 | bGetCol = RegSett.main_bGetColor; 15 | CGame_MVC2_D::bAlphaTrans = RegSett.main_bAlphaTrans; 16 | bShow32 = RegSett.main_bShow32; 17 | CGameClass::bPostSetPalProc = RegSett.main_bProcSupp; 18 | bAutoSetCol = RegSett.bAutoSetCol; 19 | } 20 | 21 | void CPalModDlg::SaveSettings() 22 | { 23 | 24 | CRegProc RegSett; 25 | 26 | RegSett.main_bGetColor = bGetCol; 27 | RegSett.main_bAlphaTrans = CGame_MVC2_D::bAlphaTrans; 28 | RegSett.main_bShow32 = bShow32; 29 | RegSett.main_bProcSupp = CGameClass::bPostSetPalProc;; 30 | RegSett.bAutoSetCol = bAutoSetCol; 31 | 32 | RegSett.SaveReg(REG_MAIN); 33 | 34 | } -------------------------------------------------------------------------------- /lkg/gitversion/PalModDlg_Debug.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "PalMod.h" 3 | #include "PalModDlg.h" 4 | 5 | #include "Game\Game_MVC2_D.h" 6 | 7 | void CPalModDlg::OnBnClickedBEidrian2() 8 | { 9 | // TODO: Add your control notification handler code here 10 | 11 | UpdateData(); 12 | 13 | if(bRGB) 14 | { 15 | 16 | ((CGame_MVC2_D *)GetHost()->GetCurrGame())->ForEidrian(0, 17 | RGB( 18 | (int)round(m_RHSlider.GetPos()*nRMul), 19 | (int)round(m_GSSlider.GetPos()*nGMul), 20 | (int)round(m_BLSlider.GetPos()*nBMul)) | (UINT32)((m_ASlider.GetPos() * 17) << 24)); 21 | 22 | } 23 | 24 | UpdateData(FALSE); 25 | } 26 | 27 | void CPalModDlg::OnBnClickedBEidrian1() 28 | { 29 | // TODO: Add your control notification handler code here 30 | 31 | ((CGame_MVC2_D *)GetHost()->GetCurrGame())->ForEidrian(1); 32 | } 33 | -------------------------------------------------------------------------------- /lkg/gitversion/RegProc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define REG_MAIN 0 4 | #define REG_PREV 1 5 | #define REG_IMGOUT 2 6 | 7 | #define RECT_STRSZ 256 8 | 9 | #define BGBMPFILE "bgbmp.bmp" 10 | 11 | class CRegProc 12 | { 13 | public: 14 | CRegProc(int nSrcType = -1); 15 | ~CRegProc(void); 16 | 17 | void LoadReg(int src); 18 | void SaveReg(int src); 19 | 20 | //Main 21 | 22 | RECT main_szpos; 23 | 24 | //CString main_lastdirdir; 25 | //CString main_lastfiledir; 26 | 27 | BOOL main_bGetColor; 28 | BOOL main_bAlphaTrans; 29 | BOOL main_bShow32; 30 | BOOL main_bProcSupp; 31 | 32 | BOOL bAutoSetCol; 33 | 34 | //Preview 35 | 36 | RECT prev_szpos; 37 | 38 | COLORREF prev_bgcol; 39 | COLORREF prev_blinkcol; 40 | float prev_zoom; 41 | 42 | CHAR szPrevBGLoc[MAX_PATH]; 43 | int nBGXOffs; 44 | int nBGYOffs; 45 | BOOL bTileBG; 46 | BOOL bUseBGCol; 47 | 48 | //New Image 49 | 50 | RECT imgout_szpos; 51 | COLORREF imgout_bgcol; 52 | DWORD imgout_border; 53 | DWORD imgout_zoomindex; 54 | BOOL bTransPNG; 55 | 56 | 57 | 58 | }; 59 | 60 | CString RectToStr(RECT in_rect); 61 | RECT StrToRect(CString in_str); 62 | 63 | -------------------------------------------------------------------------------- /lkg/gitversion/SFA3_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFA3_A_NUMUNIT 28 4 | #define SFA3_A_PALSZ 16 5 | 6 | #define SFA3_A_IMGSTART 0x3B + 0x11 7 | 8 | const UINT16 SFA3_A_IMGREDIR[SFA3_A_NUMUNIT] = 9 | { 10 | 0x00, 11 | 0x27, 12 | 0x1E, 13 | 0x21, 14 | SFA3_A_IMGSTART + 0x00, 15 | SFA3_A_IMGSTART + 0x01, 16 | SFA3_A_IMGSTART + 0x02, 17 | SFA3_A_IMGSTART + 0x03, 18 | SFA3_A_IMGSTART + 0x04, 19 | SFA3_A_IMGSTART + 0x05, 20 | 0x26, 21 | SFA3_A_IMGSTART + 0x06, 22 | 0x23, 23 | 0x22, 24 | SFA3_A_IMGSTART + 0x07, 25 | 0x25, 26 | 0x01, 27 | SFA3_A_IMGSTART + 0x08, 28 | SFA3_A_IMGSTART + 0x09, 29 | 0x24, 30 | SFA3_A_IMGSTART + 0x0A, 31 | SFA3_A_IMGSTART + 0x0B, 32 | SFA3_A_IMGSTART + 0x0C, 33 | SFA3_A_IMGSTART + 0x0D, 34 | SFA3_A_IMGSTART + 0x0E, 35 | SFA3_A_IMGSTART + 0x0F, 36 | SFA3_A_IMGSTART + 0x10, 37 | SFA3_A_IMGSTART + 0x11, 38 | 39 | }; 40 | 41 | const CHAR SFA3_A_UNITDESC[SFA3_A_NUMUNIT][16] = 42 | { 43 | "Ryu", 44 | "Ken", 45 | "Gouki", 46 | "Charlie", 47 | "Chun-Li", 48 | "Adon", 49 | "Sodom", 50 | "Guy", 51 | "Birdie", 52 | "Rose", 53 | "M. Bison", 54 | "Sagat", 55 | "Dan", 56 | "Sakura", 57 | "Rolento", 58 | "Dhalsim", 59 | "Zangief", 60 | "Gen", 61 | "Balrog", 62 | "Cammy", 63 | "E. Honda", 64 | "Blanka", 65 | "R. Mika", 66 | "Cody", 67 | "Vega", 68 | "Karin", 69 | "Juni", 70 | "Juli" 71 | 72 | 73 | }; -------------------------------------------------------------------------------- /lkg/gitversion/SFIII3_D_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SFIII3_D_NUMUNIT 0x14 4 | #define SFIII3_D_PALSZ 64 5 | 6 | const char SFIII3_D_UNITDESC[SFIII3_D_NUMUNIT][16] = 7 | { 8 | //"Gill", //0x 9 | "Alex", //0x00 10 | "Ryu", //0x01 11 | "Yun", //0x02 12 | "Dudley", //0x03 13 | "Necro", //0x04 14 | "Hugo", //0x05 15 | "Ibuki", //0x06 16 | "Elena", //0x07 17 | "Oro", //0x08 18 | "Yang", //0x09 19 | "Ken", //0x0A 20 | "Sean", //0x0B 21 | "Urien", //0x0C 22 | "Gouki", //0x0D 23 | "Shin-Gouki", //0x0E 24 | "Chun-Li", //0x0F 25 | "Makoto", //0x10 26 | "Q", //0x11 27 | "Twelve", //0x12 28 | "Remy" //0x13 29 | }; 30 | 31 | const UINT8 SFIII3_D_UNITSORT[SFIII3_D_NUMUNIT] = //Plus 1 for the extra palettes 32 | { 33 | 0x00, 34 | 0x0F, 35 | 0x03, 36 | 0x07, 37 | 0x0D, 38 | 0x05, 39 | 0x06, 40 | 0x0A, 41 | 0x10, 42 | 0x04, 43 | 0x08, 44 | 0x11, 45 | 0x13, 46 | 0x01, 47 | 0x0B, 48 | 0x0E, 49 | 0x12, 50 | 0x0C, 51 | 0x09, 52 | 0x02 53 | 54 | }; -------------------------------------------------------------------------------- /lkg/gitversion/SSF2T_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SSF2T_A_NUMUNIT 17 4 | #define SSF2T_A_PALSZ 16 5 | 6 | #define SSF2T_A_IMGOFFSET 0x3B 7 | 8 | const CHAR SSF2T_A_UNITDESC[SSF2T_A_NUMUNIT][16] = 9 | { 10 | "Ryu", 11 | "E-Honda", 12 | "Blanka", 13 | "Guile", 14 | "Ken", 15 | "Chun-Li", 16 | "Zangief", 17 | "Dhalsim", 18 | "M.Bison", 19 | "Sagat", 20 | "Balrog", 21 | "Vega", 22 | "Cammy", 23 | "T-Hawk", 24 | "Fei Long", 25 | "Dee Jay", 26 | "Gouki" 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /lkg/gitversion/SettDlg.cpp: -------------------------------------------------------------------------------- 1 | // SettDlg.cpp : implementation file 2 | // 3 | 4 | #include "stdafx.h" 5 | #include "PalMod.h" 6 | #include "SettDlg.h" 7 | 8 | 9 | // CSettDlg dialog 10 | 11 | IMPLEMENT_DYNAMIC(CSettDlg, CDialog) 12 | 13 | CSettDlg::CSettDlg(CWnd* pParent /*=NULL*/) 14 | : CDialog(CSettDlg::IDD, pParent) 15 | , m_bAlphaTrans(FALSE) 16 | , m_bUpdSupp(FALSE) 17 | { 18 | 19 | } 20 | 21 | CSettDlg::~CSettDlg() 22 | { 23 | } 24 | 25 | void CSettDlg::DoDataExchange(CDataExchange* pDX) 26 | { 27 | CDialog::DoDataExchange(pDX); 28 | DDX_Check(pDX, IDC_CALPHATRANS, m_bAlphaTrans); 29 | DDX_Check(pDX, IDC_CUPDSUPP, m_bUpdSupp); 30 | } 31 | 32 | 33 | BEGIN_MESSAGE_MAP(CSettDlg, CDialog) 34 | END_MESSAGE_MAP() 35 | 36 | 37 | // CSettDlg message handlers 38 | -------------------------------------------------------------------------------- /lkg/gitversion/SettDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | // CSettDlg dialog 5 | 6 | class CSettDlg : public CDialog 7 | { 8 | DECLARE_DYNAMIC(CSettDlg) 9 | 10 | public: 11 | CSettDlg(CWnd* pParent = NULL); // standard constructor 12 | virtual ~CSettDlg(); 13 | 14 | // Dialog Data 15 | enum { IDD = IDD_SETT_DIALOG }; 16 | 17 | protected: 18 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 19 | 20 | DECLARE_MESSAGE_MAP() 21 | public: 22 | BOOL m_bAlphaTrans; 23 | BOOL m_bUpdSupp; 24 | }; 25 | -------------------------------------------------------------------------------- /lkg/gitversion/ShellSort.h: -------------------------------------------------------------------------------- 1 | //#pragma once 2 | 3 | void ShellSort(double * fpSrc, double * fpExtra1, double * fpExtra2, int * pPalette, UINT16 * pTable, int max); 4 | void ccRGBtoXYZ(double r, double g, double b, double* x, double* y, double* z); 5 | void SpecialSort(double * fpSrc, int * pPalette, UINT16 * pTable, int nSize); 6 | -------------------------------------------------------------------------------- /lkg/gitversion/UpgradeLog.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/UpgradeLog.htm -------------------------------------------------------------------------------- /lkg/gitversion/XMVSF_A_DEF.h: -------------------------------------------------------------------------------- 1 | #define XMVSF_A_NUMUNIT 19 2 | #define XMVSF_A_PALSZ 16 3 | #define XMVSF_A_IMGSTART (0x3B + 0x11 + 0x11) //MVC2, then SSF2T, then SFA3 4 | 5 | 6 | const UINT8 XMVSF_A_IMGREDIR[XMVSF_A_NUMUNIT] = 7 | { 8 | 0x07, 9 | 0x06, 10 | 0x2A, 11 | 0x0A, 12 | 0x28, 13 | 0x2B, 14 | 0x29, 15 | 0x2C, 16 | XMVSF_A_IMGSTART, 17 | 0x00, 18 | 0x27, 19 | 0x1B, 20 | 0x25, 21 | 0x01, 22 | 0x26, 23 | 0x1E, 24 | 0x21, 25 | 0x24, 26 | 0x3B + 0x11 // Chun Li's image in SFA3 27 | 28 | }; 29 | 30 | const CHAR XMVSF_A_UNITDESC[XMVSF_A_NUMUNIT][16] = 31 | { 32 | "Wolverine", 33 | "Cyclops", 34 | "Storm", 35 | "Rogue", 36 | "Gambit", 37 | "Sabretooth", 38 | "Juggernaut", 39 | "Magneto", 40 | "Apocalypse", 41 | "Ryu", 42 | "Ken", 43 | "Chun-Li", 44 | "Dhalsim", 45 | "Zangief", 46 | "M. Bison", 47 | "Gouki", 48 | "Charlie", 49 | "Cammy", 50 | "Chun-Li (SFA)" 51 | }; 52 | 53 | const UINT32 XMVSF_A_UNITLOC[XMVSF_A_NUMUNIT + 1] = 54 | { 55 | 0x14D7C, 56 | 0x14E3C, 57 | 0x14FBC, 58 | 0x1531C, 59 | 0x153DC, //GAMBIT 60 | 0x1549C, 61 | 0x1559C, 62 | 0x156BC, 63 | 0x157DC, 64 | 0x1589C, 65 | 0x15A1C, 66 | 0x15B9C, 67 | 0x15C5C, 68 | 0x15D5C, 69 | 0x15FDC, 70 | 0x1609C, 71 | 0x1621C, 72 | 0x1639C, 73 | 0x164BC, 74 | 0x1657C, 75 | }; -------------------------------------------------------------------------------- /lkg/gitversion/newgamedummy/Game_MVC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | #include "SSF2T_A_DEF.h" 4 | 5 | 6 | class CGame_SSF2T_A : public CGameClass 7 | { 8 | private: 9 | 10 | //Used for image selection 11 | int nTargetImgId; 12 | int nNormalPalAmt; 13 | 14 | //Used for GetPalOffset 15 | 16 | int nCurrPalOffs; 17 | int nCurrPalSz; 18 | 19 | UINT16 ***pppDataBuffer; 20 | 21 | void GetPalOffsSz(int nUnitId, int nPalId); 22 | 23 | void InitDataBuffer(); 24 | void ClearDataBuffer(); 25 | 26 | public: 27 | CGame_SSF2T_A(void); 28 | ~CGame_SSF2T_A(void); 29 | 30 | //Static functions / variables 31 | static CDescTree MainDescTree; 32 | 33 | // static CDescTree * GetMainTree(); 34 | static CDescTree InitDescTree(); 35 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 36 | static sFileRule GetRule(int nUnitId); 37 | 38 | //Extra palette function 39 | static int GetBasicAmt(int nUnitId); 40 | 41 | static void LoadExtraFile(); 42 | 43 | //Normal functions 44 | CDescTree * GetMainTree(); 45 | 46 | int GetPalCt(int nUnitId); 47 | 48 | void CreateDefPal(sDescNode * srcNode, int nSepId); 49 | BOOL LoadFile(CFile * LoadedFile, int nUnitId = 0); 50 | BOOL SaveFile(CFile * SaveFile, int nUnitId = 0); 51 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 52 | 53 | COLORREF * CreatePal(int nUnitId, int nPalId); 54 | 55 | void UpdatePalData(); 56 | 57 | void FlushUnitFile(){if(bFileChanged){delete bFileChanged; bFileChanged = NULL;}}; 58 | void PrepUnitFile(){if(!bFileChanged){ bFileChanged = new UINT8;}}; 59 | 60 | 61 | }; 62 | -------------------------------------------------------------------------------- /lkg/gitversion/newgamedummy/MVC_A_DEF.h: -------------------------------------------------------------------------------- 1 | #define SSF2T_A_NUMUNIT 17 2 | #define SSF2T_A_PALSZ 16 3 | 4 | const CHAR SSF2T_A_UNITDESC[SSF2T_A_NUMUNIT][16] = 5 | { 6 | "Ryu", 7 | "E-Honda", 8 | "Blanka", 9 | "Guile", 10 | "Ken", 11 | "Chun-Li", 12 | "Zangief", 13 | "Dhalsim", 14 | "M.Bison", 15 | "Sagat", 16 | "Balrog", 17 | "Vega", 18 | "Cammy", 19 | "T-Hawk", 20 | "Fei Long", 21 | "Dee Jay", 22 | "Gouki" 23 | }; -------------------------------------------------------------------------------- /lkg/gitversion/palmod/palmod/res/palmod_.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | Your app description here 10 | 11 | 12 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lkg/gitversion/palmod/res/palmod_.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | Your app description here 10 | 11 | 12 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lkg/gitversion/res/PalMod.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/lkg/gitversion/res/PalMod.ico -------------------------------------------------------------------------------- /lkg/gitversion/res/PalMod.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // PalMod.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /lkg/gitversion/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // PalMod.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | 8 | -------------------------------------------------------------------------------- /lkg/gitversion/targetver.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | // The following macros define the minimum required platform. The minimum required platform 5 | // is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 6 | // your application. The macros work by enabling all features available on platform versions up to and 7 | // including the version specified. 8 | 9 | // Modify the following defines if you have to target a platform prior to the ones specified below. 10 | // Refer to MSDN for the latest info on corresponding values for different platforms. 11 | #ifndef WINVER // Specifies that the minimum required platform is Windows Vista. 12 | #define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. 13 | #endif 14 | 15 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. 16 | #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. 17 | #endif 18 | 19 | #ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. 20 | #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. 21 | #endif 22 | 23 | #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. 24 | #define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. 25 | #endif 26 | 27 | -------------------------------------------------------------------------------- /lkg/palmod/res/palmod_.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | Your app description here 10 | 11 | 12 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /palmod/CRC32.h: -------------------------------------------------------------------------------- 1 | unsigned long CRC32_BlockChecksum(CFile *pFile, int length); 2 | unsigned long CRC32_BlockChecksum(unsigned char* buf, int length); 3 | 4 | void CRC32_InitChecksum(unsigned long& crcvalue); 5 | void CRC32_UpdateChecksum(unsigned long& crcvalue, unsigned char* pInBuffer, int length); 6 | void CRC32_FinishChecksum(unsigned long& crcvalue); 7 | -------------------------------------------------------------------------------- /palmod/Debug/PalMod.exe.recipe: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C:\Users\preppy\Desktop\PalMod\drew\palmod\Debug\PalMod.exe 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /palmod/Debug/bgbmp.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Debug/bgbmp.bmp -------------------------------------------------------------------------------- /palmod/Game/DescTree.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Default.h" 3 | 4 | constexpr auto DESC_NODETYPE_TREE = 0; 5 | constexpr auto DESC_NODETYPE_NODE = 1; 6 | 7 | //Description tree definition 8 | 9 | struct sDescNode 10 | { 11 | wchar_t szDesc[MAX_DESCRIPTION_LENGTH] = L"uninit"; 12 | 13 | uint32_t uUnitId = INVALID_UNIT_VALUE; 14 | uint32_t uPalId = 0; 15 | }; 16 | 17 | struct sDescTreeNode 18 | { 19 | wchar_t szDesc[MAX_DESCRIPTION_LENGTH] = L"uninit"; 20 | 21 | uint8_t uChildType = DESC_NODETYPE_TREE; 22 | void* ChildNodes = nullptr; 23 | uint32_t uChildAmt = 0; 24 | // Solely used within CGameClassByDir 25 | // Allows for reusing units from loose ROM sets by specifying their offset location 26 | // within the new monolithic ROM composition 27 | size_t nROMShift = 0; 28 | }; 29 | 30 | class CDescTree 31 | { 32 | private: 33 | sDescTreeNode* RootTree = nullptr; 34 | bool m_isInitialized = false; 35 | 36 | public: 37 | CDescTree(sDescTreeNode* InputTree = NULL); 38 | ~CDescTree(); 39 | 40 | void SetRootTree(sDescTreeNode* NewTree); 41 | void DumpTree(const sDescTreeNode* pTreeOfInterest); 42 | void FlushTree(sDescTreeNode* CurrTree); 43 | void FlushRootTree(); 44 | sDescNode* GetDescNode(int nChildId, ...); 45 | sDescTreeNode* GetDescTree(int nChildId, ...); 46 | }; 47 | -------------------------------------------------------------------------------- /palmod/Game/DevMode_DIR_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | const sGame_PaletteDataset DevMode_DIR_STUB_PALETTE[] = 4 | { 5 | { L"Configure your Extras file and then reload!", 0x0, 0x20 }, 6 | }; 7 | 8 | const sDescTreeNode DevMode_DIR_STUB_COLLECTION[] = 9 | { 10 | { L"Configure your Extras file", DESC_NODETYPE_TREE, (void*)DevMode_DIR_STUB_PALETTE, ARRAYSIZE(DevMode_DIR_STUB_PALETTE) }, 11 | }; 12 | 13 | const sDescTreeNode DevMode_DIR_UNITS[] = 14 | { 15 | { L"Test only - Don't edit!", DESC_NODETYPE_TREE, (void*)DevMode_DIR_STUB_COLLECTION, ARRAYSIZE(DevMode_DIR_STUB_COLLECTION) }, 16 | }; 17 | 18 | const stExtraDef UNKNOWN_GAME_DIR_EXTRAS_LIST[] = 19 | { 20 | // Start 21 | { UNIT_START_VALUE }, 22 | 23 | { 0, L"Configure your Extras file.", 0, 0x20 }, 24 | 25 | { INVALID_UNIT_VALUE } 26 | }; 27 | -------------------------------------------------------------------------------- /palmod/Game/GameLoad.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "GameClass.h" 4 | 5 | class CGameLoad 6 | { 7 | private: 8 | BOOL SetGame(int nGameFlag); 9 | 10 | uint32_t(*GetRuleCtr)() = {}; 11 | void (*ResetRuleCtr)() = {}; 12 | sFileRule(*GetNextRule)() = {}; 13 | sFileRule(*GetRule)(uint32_t) = {}; 14 | CGameClass* CreateGame(int nGameFlag, uint32_t nConfirmedROMSize, int nExtraGameData = 0, LPCWSTR pszFilePath = nullptr); 15 | 16 | bool IsLocationOnReadOnlyDrive(LPCWSTR pszLocation, LPWSTR pszDrivePath = nullptr, uint32_t ccPathSize = 0); 17 | bool VerifyLocationIsUsable(LPCWSTR pszLocation); 18 | bool IsGameUnitMvC2TeamView(int eGameID, uint32_t nGameUnit); 19 | 20 | CString strLoadSaveStr = L""; 21 | 22 | int nSaveLoadCount = 0; 23 | int nSaveLoadSucc = 0; 24 | int nSaveLoadErr = 0; 25 | 26 | public: 27 | CGameLoad() {}; 28 | ~CGameLoad() {}; 29 | 30 | CGameClass* LoadFile(int nGameFlag, wchar_t* pszLoadFile); 31 | CGameClass* LoadDir(int nGameFlag, wchar_t* pszLoadDir); 32 | bool SaveGame(CGameClass* CurrGame); 33 | void SavePatchFile(CGameClass* CurrGame); 34 | void SaveMultiplePatchFiles(CGameClass* CurrGame, CString strTargetDirectory); 35 | void CrosscopyGame_DCPS2(CGameClass* CurrGame); 36 | void CrosscopyGame_SteamToDC(CGameClass* CurrGame); 37 | void CrosscopyGame_ToSteam(CGameClass* CurrGame); 38 | 39 | int GetErrCt() { return nSaveLoadErr; }; 40 | int GetChangedCt() { return nSaveLoadSucc; }; 41 | CString GetLoadSaveStr() { return strLoadSaveStr; }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/GameRegistry.h: -------------------------------------------------------------------------------- 1 | #include "GameDef.h" 2 | #include "GameClass.h" 3 | 4 | using GameConstructor = CGameClass * (*)(uint32_t, int, LPCWSTR); 5 | using GetRuleFunc = sFileRule(*)(uint32_t); 6 | using GetNextRuleFunc = sFileRule(*)(); 7 | using GetRuleCtrFunc = uint32_t(*)(); 8 | using ResetRuleCtrFunc = void (*)(); 9 | 10 | namespace KnownGameInfo 11 | { 12 | LPCWSTR GetGameNameForGameID(int nGameID); 13 | bool FindConstructorForGameID(int nGameID, GameConstructor& gameConstructor); 14 | bool FindRuleDataForGameID(int nGameID, GetRuleFunc& GetRule, GetNextRuleFunc& GetNextRule, GetRuleCtrFunc& GetRuleCtr, ResetRuleCtrFunc& ResetRuleCtr); 15 | 16 | std::vector& GetGameToFileMap(); 17 | 18 | void SetExtraLoadingDataForGame(int nGameFlag, LPCWSTR pszFileNameLowercase, int& nGameRule); 19 | }; 20 | -------------------------------------------------------------------------------- /palmod/Game/Game_BASARA_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "BASARA_P_DEF.h" 4 | 5 | class CGame_BASARA_P : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"BSR.bin", 0x1b206800 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Sengoku BASARA X (PS2)", 19 | BASARA_P, 20 | IMGDAT_SECTION_ARCSYS, 21 | BASARA_P_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_BASARA, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB555_BE, 27 | m_sFileLoadingData, 28 | {}, 29 | BASARA_P_UNITS, 30 | ARRAYSIZE(BASARA_P_UNITS), 31 | L"BSRE.txt", // Extra filename 32 | 176, // Count of palettes listed in the header 33 | 0x30, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_BASARA_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_BSSMSJR_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "BSSMSJR_SNES_DEF.h" 4 | 5 | class CGame_BSSMSJR_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Bishoujo Senshi Sailor Moon S - Jougai Rantou! Shuyaku Soudatsusen (Japan).sfc", 0x280000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Bishojo Senshi Sailor Moon S - JR (SNES)", 19 | BSSMSJR_SNES, 20 | IMGDAT_SECTION_SNES, 21 | BSSMSJR_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2_AB, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | BSSMSJR_SNES_UNITS, 30 | ARRAYSIZE(BSSMSJR_SNES_UNITS), 31 | L"BSSMSJRE.txt", // Extra filename 32 | 18, // Count of palettes listed in the header 33 | 0x20057e, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_BSSMSJR_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_BlazBlueCF_S.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "BlazBlueCF_S_DEF.h" 3 | 4 | class CGame_BlazBlueCF_S : public CGameClassPerUnitPerFile 5 | { 6 | private: 7 | const sGCPUPF_CoreGameData m_sCoreGameData 8 | { 9 | L"BlazBlue Central Fiction (Steam)", 10 | BlazBlueCF_S, 11 | IMGDAT_SECTION_ARCSYS, 12 | BlazBlueCF_S_IMGIDS_USED, 13 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 14 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 15 | AlphaMode::GameUsesVariableAlpha, 16 | ColMode::COLMODE_BGRA8888_LE, 17 | BlazBlueCF_S_CharacterData, 18 | PaletteArrangementStyle::OneButtonLabelEntryPerEachNode, 19 | }; 20 | 21 | public: 22 | CGame_BlazBlueCF_S(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_BlazBlueCF_S() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, BlazBlueCF_S_CharacterData); }; 26 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(BlazBlueCF_S_CharacterData); }; 27 | }; 28 | -------------------------------------------------------------------------------- /palmod/Game/Game_BtlKRoad_A_DIR.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "BtlKRoad_A_DIR_DEF.h" 4 | 5 | class CGame_BtlKRoad_A_DIR : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"4-u46.bin", 0x40000 }, 12 | { L"5-u39.bin", 0x40000 }, 13 | }, 14 | FileReadType::Interleaved_Read2Bytes_BE, 15 | }; 16 | 17 | const sCoreGameData m_sCoreGameData 18 | { 19 | L"Battle K-Road (Psikyo)", 20 | BtlKRoad_A, 21 | IMGDAT_SECTION_OTHER, 22 | BtlKRoad_A_IMGIDS_USED, 23 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 24 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 25 | DEF_NOBUTTONS, 26 | AlphaMode::GameUsesFixedAlpha, 27 | ColMode::COLMODE_RGB555_BE, 28 | m_sFileLoadingData, 29 | {}, 30 | BtlKRoad_A_UNITS, 31 | ARRAYSIZE(BtlKRoad_A_UNITS), 32 | L"BtlKRoadE.txt", // Extra filename 33 | 48, // Count of palettes listed in the header 34 | 0xaed0, // Lowest known location used for palettes 35 | }; 36 | 37 | public: 38 | CGame_BtlKRoad_A_DIR(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 39 | 40 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 41 | static sFileRule GetNextRule() { return CGameClassByDir::GetNextRule(m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_CFTE_SNES.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Game/Game_CFTE_SNES.cpp -------------------------------------------------------------------------------- /palmod/Game/Game_CFTE_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "CFTE_SNES_DEF.h" 4 | 5 | class CGame_CFTE_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Clay Fighter - Tournament Edition (USA).sfc", 0x300000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Clay Fighter: TE", L"Clay Fighter - Tournament Edition (USA).sfc", 0xb360f7af, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Clay Fighter: TE (SNES)", 24 | CFTE_SNES, 25 | IMGDAT_SECTION_SNES, 26 | CFTE_SNES_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_NOBUTTONS, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_BGR555_LE, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | CFTE_SNES_UNITS, 35 | ARRAYSIZE(CFTE_SNES_UNITS), 36 | L"CFTEe.txt", // Extra filename 37 | 56, // Count of palettes listed in the header 38 | 0x10000, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_CFTE_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_DBFCI_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "DBFCI_S_DEF.h" 4 | 5 | class CGame_DBFCI_A : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Dengeki Bunko Fighting Climax Ignition (Arcade)", 11 | DBFCI_A, 12 | IMGDAT_SECTION_FRENCHBREAD, 13 | DBFCI_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameDoesNotUseAlpha, 17 | ColMode::COLMODE_RGBA8881, 18 | DBFCICharacterData, 19 | }; 20 | 21 | public: 22 | CGame_DBFCI_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_DBFCI_A() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | int PostSetPal(uint32_t nUnitId, uint32_t nPalId) override; 26 | 27 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, DBFCICharacterData); }; 28 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(DBFCICharacterData); }; 29 | }; 30 | -------------------------------------------------------------------------------- /palmod/Game/Game_DaemonBrideAG_NL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByFile.h" 3 | #include "DaemonBrideAG_NL_DEF.h" 4 | 5 | class CGame_DaemonBrideAG_NL : public CGameClassByFile 6 | { 7 | private: 8 | const sGCBF_CoreGameData m_sCoreGameData 9 | { 10 | L"Daemon Bride: Additional Gain (NESICAxLive)", 11 | DaemonBrideAG_NL, 12 | IMGDAT_SECTION_OTHER, 13 | DaemonBrideAG_NL_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | DEF_BUTTONLABEL_NEOGEO, 16 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 17 | AlphaMode::GameUsesVariableAlpha, 18 | ColMode::COLMODE_RGB555_BE, 19 | DAEMONBRIDEAG_NL_UNITS, 20 | }; 21 | 22 | public: 23 | CGame_DaemonBrideAG_NL(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 24 | ~CGame_DaemonBrideAG_NL() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 25 | 26 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByFile::GetRule(nRuleId, DAEMONBRIDEAG_NL_UNITS); }; 27 | static sFileRule GetNextRule() { return CGameClassByFile::GetNextRule(DAEMONBRIDEAG_NL_UNITS); }; 28 | }; 29 | -------------------------------------------------------------------------------- /palmod/Game/Game_DaemonBride_NL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByFile.h" 3 | #include "DaemonBride_NL_DEF.h" 4 | 5 | class CGame_DaemonBride_NL : public CGameClassByFile 6 | { 7 | private: 8 | const sGCBF_CoreGameData m_sCoreGameData 9 | { 10 | L"Daemon Bride (NESICAxLive)", 11 | DaemonBride_NL, 12 | IMGDAT_SECTION_OTHER, 13 | DaemonBride_NL_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | DEF_BUTTONLABEL_NEOGEO, 16 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 17 | AlphaMode::GameUsesVariableAlpha, 18 | ColMode::COLMODE_RGB555_BE, 19 | DAEMONBRIDE_NL_UNITS, 20 | }; 21 | 22 | public: 23 | CGame_DaemonBride_NL(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 24 | ~CGame_DaemonBride_NL() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 25 | 26 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByFile::GetRule(nRuleId, DAEMONBRIDE_NL_UNITS); }; 27 | static sFileRule GetNextRule() { return CGameClassByFile::GetNextRule(DAEMONBRIDE_NL_UNITS); }; 28 | }; 29 | -------------------------------------------------------------------------------- /palmod/Game/Game_FatalFury2_A.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_FatalFury2_A.h" 3 | 4 | CGame_FatalFury2_A::FF2LoadingKey CGame_FatalFury2_A::m_eVersionToLoad = FF2LoadingKey::Normal; 5 | 6 | void CGame_FatalFury2_A::SetSpecialRuleForFileName(std::wstring strFileName) 7 | { 8 | const std::map m_rgFileNameToVersion = 9 | { 10 | // these should be all lower case 11 | { L"047-p1.bin", FF2LoadingKey::Normal }, 12 | { L"047-epr.ep1", FF2LoadingKey::Normal }, 13 | { L"047-p1.p1", FF2LoadingKey::Jumbo }, 14 | }; 15 | 16 | CString strFileNameLowerCase = strFileName.c_str(); 17 | strFileNameLowerCase.MakeLower(); 18 | 19 | auto result = m_rgFileNameToVersion.find(strFileNameLowerCase.GetString()); 20 | 21 | if (result != m_rgFileNameToVersion.end()) 22 | { 23 | m_eVersionToLoad = result->second; 24 | } 25 | else 26 | { 27 | m_eVersionToLoad = FF2LoadingKey::Normal; 28 | } 29 | 30 | return; 31 | } 32 | 33 | CGame_FatalFury2_A::CGame_FatalFury2_A(uint32_t nConfirmedROMSize /*= -1*/) 34 | { 35 | InitializeGame(nConfirmedROMSize, (m_eVersionToLoad == FF2LoadingKey::Normal) ? m_sCoreGameData_Normal : m_sCoreGameData_Alt); 36 | } 37 | 38 | sFileRule CGame_FatalFury2_A::GetRule(uint32_t nRuleId) 39 | { 40 | return CGameClassByDir::GetRule(nRuleId, (m_eVersionToLoad == FF2LoadingKey::Normal) ? FatalFury2_A_FileLoadingData_Normal : FatalFury2_A_FileLoadingData_Alt); 41 | } 42 | -------------------------------------------------------------------------------- /palmod/Game/Game_FightFever_A.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_FightFever_A.h" 3 | 4 | CGame_FightFever_A::FFLoadingKey CGame_FightFever_A::m_eVersionToLoad = FFLoadingKey::Set2; 5 | 6 | void CGame_FightFever_A::SetSpecialRuleForFileName(std::wstring strFileName) 7 | { 8 | const std::map m_rgFileNameToVersion = 9 | { 10 | // these should be all lower case 11 | { L"060-p1.bin", FFLoadingKey::Set1 }, 12 | { L"060-p1.p1", FFLoadingKey::Set2 }, 13 | { L"060-p1.rom", FFLoadingKey::Set2 }, // Unclear if this is ever actually used 14 | }; 15 | 16 | CString strFileNameLowerCase = strFileName.c_str(); 17 | strFileNameLowerCase.MakeLower(); 18 | 19 | auto result = m_rgFileNameToVersion.find(strFileNameLowerCase.GetString()); 20 | 21 | if (result != m_rgFileNameToVersion.end()) 22 | { 23 | m_eVersionToLoad = result->second; 24 | } 25 | else 26 | { 27 | m_eVersionToLoad = FFLoadingKey::Set2; 28 | } 29 | 30 | return; 31 | } 32 | 33 | CGame_FightFever_A::CGame_FightFever_A(uint32_t nConfirmedROMSize /*= -1*/) 34 | { 35 | InitializeGame(nConfirmedROMSize, (m_eVersionToLoad == FFLoadingKey::Set1) ? m_sCoreGameData_Set1 : m_sCoreGameData_Set2); 36 | } 37 | 38 | sFileRule CGame_FightFever_A::GetRule(uint32_t nRuleId) 39 | { 40 | return CGameClassByDir::GetRule(nRuleId, (m_eVersionToLoad == FFLoadingKey::Set1) ? m_sFileLoadingData_Set1 : m_sFileLoadingData_Set2); 41 | } 42 | -------------------------------------------------------------------------------- /palmod/Game/Game_FotNS_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "FotNS_P_DEF.h" 4 | 5 | class CGame_FotNS_P : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"HK_B.bin", 0x24706800 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Hokuto no Ken (PS2)", 19 | FotNS_P, 20 | IMGDAT_SECTION_ARCSYS, 21 | FotNS_P_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_FotNS, 25 | AlphaMode::GameUsesFixedAlpha, 26 | ColMode::COLMODE_RGB555_BE, 27 | m_sFileLoadingData, 28 | {}, 29 | FotNS_P_UNITS, 30 | ARRAYSIZE(FotNS_P_UNITS), 31 | L"HK_BE.txt", // Extra filename 32 | 88, // Count of palettes listed in the header 33 | 0x30, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_FotNS_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_GGML_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "GGML_P_DEF.h" 4 | 5 | class CGame_GGML_P : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Guilty Gear: The Missing Link (PS1)", 11 | GGML_P, 12 | IMGDAT_SECTION_GUILTYGEAR, 13 | GGML_P_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | // PS1 alpha value is a transparency bit, with valid settings being 0 / 1. 17 | // That affects how the colors are blended during special transparency effects. 18 | AlphaMode::GameUsesSTPNotAlpha, 19 | ColMode::COLMODE_BGR555_LE, 20 | GGML_P_CharacterData, 21 | PaletteArrangementStyle::EachBasicNodeContainsAFullButtonLabelSet, 22 | 0x20, // Core Palette Sizes, we want 16 colours instead of the full table 23 | BlendMode::PS1SemiTransparencyOff, 24 | }; 25 | 26 | public: 27 | CGame_GGML_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 28 | ~CGame_GGML_P() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 29 | 30 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, GGML_P_CharacterData); }; 31 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(GGML_P_CharacterData); }; 32 | }; 33 | -------------------------------------------------------------------------------- /palmod/Game/Game_GGXXACP_Wii.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "GameClassByUnitPerFile.h" 4 | #include "GGXXACP_Wii_DEF.h" 5 | 6 | class CGame_GGXXACP_Wii : public CGameClassPerUnitPerFile 7 | { 8 | private: 9 | const sGCPUPF_CoreGameData m_sCoreGameData 10 | { 11 | L"GGXX:AC+ (Wii, ID:R3NEXS)", 12 | GGXXACP_Wii, 13 | IMGDAT_SECTION_GUILTYGEAR, 14 | GGXX_ACR_IMGIDS_USED, 15 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 16 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 17 | AlphaMode::GameUsesVariableAlpha, 18 | ColMode::COLMODE_RGBA8887, 19 | GGXXACP_Wii_CharacterData, 20 | }; 21 | 22 | public: 23 | CGame_GGXXACP_Wii(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 24 | ~CGame_GGXXACP_Wii() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 25 | 26 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, GGXXACP_Wii_CharacterData); }; 27 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(GGXXACP_Wii_CharacterData); }; 28 | }; 29 | -------------------------------------------------------------------------------- /palmod/Game/Game_GGXXACR_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "GGXXACR_P_DEF.h" 4 | 5 | class CGame_GGXXACR_P : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"GGXX:AC+R (PlayStation 3)", 11 | GGXXACR_P, 12 | IMGDAT_SECTION_GUILTYGEAR, 13 | GGXX_ACR_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesVariableAlpha, 17 | ColMode::COLMODE_RGBA8887, 18 | GGXXACR_P_CharacterData, 19 | }; 20 | public: 21 | CGame_GGXXACR_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 22 | ~CGame_GGXXACR_P() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 23 | 24 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, GGXXACR_P_CharacterData); }; 25 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(GGXXACR_P_CharacterData); }; 26 | }; 27 | -------------------------------------------------------------------------------- /palmod/Game/Game_GGXXR_S.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "GGXXR_S_DEF.h" 4 | 5 | class CGame_GGXXR_S : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"GGXX #Reload (Steam: JPN/Netplay Patch)", 11 | GGXXR_S, 12 | IMGDAT_SECTION_GUILTYGEAR, 13 | GGXX_Rld_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesVariableAlpha, 17 | ColMode::COLMODE_RGBA8887, 18 | GGXXR_S_CharacterData, 19 | }; 20 | 21 | public: 22 | CGame_GGXXR_S(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_GGXXR_S() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, GGXXR_S_CharacterData); }; 26 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(GGXXR_S_CharacterData); }; 27 | }; 28 | -------------------------------------------------------------------------------- /palmod/Game/Game_GalaxyFight_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "GalaxyFight_A_DEF.h" 4 | 5 | class CGame_GalaxyFight_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"078-p1.p1", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Galaxy Fight: Universal Warriors (Neo-Geo)", L"078-p1.p1", 0x45906309, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Galaxy Fight: Universal Warriors (Neo-Geo)", 24 | GalaxyFight_A, 25 | IMGDAT_SECTION_NEOGEO, 26 | GalaxyFight_A_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_NOBUTTONS, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_RGB666_NEOGEO, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | GalaxyFight_A_UNITS, 35 | ARRAYSIZE(GalaxyFight_A_UNITS), 36 | L"GalaxyFightE.txt", // Extra filename 37 | 628, // Count of palettes listed in the header 38 | 0x114a9e, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_GalaxyFight_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_Gowcaizer_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "Gowcaizer_A_DEF.h" 4 | 5 | class CGame_Gowcaizer_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"094-p1.p1", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Voltage Fighter Gowcaizer (Neo-Geo)", L"094-p1.p1", 0x33019545, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Voltage Fighter Gowcaizer (Neo-Geo)", 24 | Gowcaizer_A, 25 | IMGDAT_SECTION_NEOGEO, 26 | Gowcaizer_A_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_BUTTONLABEL_2, 30 | AlphaMode::GameUsesFixedAlpha, 31 | ColMode::COLMODE_RGB666_NEOGEO, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | Gowcaizer_A_UNITS, 35 | ARRAYSIZE(Gowcaizer_A_UNITS), 36 | L"GowcaizerE.txt", // Extra filename 37 | 291, // Count of palettes listed in the header 38 | 0x1354c0, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_Gowcaizer_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_JOJOS_A_DIR.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_JOJOS_A.h" 3 | 4 | class CGame_JOJOS_A_DIR : public CGame_JOJOS_A 5 | { 6 | private: 7 | static sFileRule GetNextRuleInternal(JojosLoadingKey nVersionToLoad); 8 | static sFileRule GetRuleInternal(uint32_t nRuleId, JojosLoadingKey nVersionToLoad); 9 | 10 | public: 11 | CGame_JOJOS_A_DIR(uint32_t nConfirmedROMSize, JojosLoadingKey nJojosModeToLoad); 12 | 13 | static sFileRule GetNextRule50() { return GetNextRuleInternal(JojosLoadingKey::JOJOS_A_50_ROMKEY_RERIP); }; 14 | static sFileRule GetRule50(uint32_t nRuleId) { return GetRuleInternal(nRuleId, JojosLoadingKey::JOJOS_A_50_ROMKEY_RERIP); }; 15 | static sFileRule GetNextRule51() { return GetNextRuleInternal(JojosLoadingKey::JOJOS_A_51_ROMKEY_RERIP); }; 16 | static sFileRule GetRule51(uint32_t nRuleId) { return GetRuleInternal(nRuleId, JojosLoadingKey::JOJOS_A_51_ROMKEY_RERIP); }; 17 | static sFileRule GetNextRule51RegOn() { return GetNextRuleInternal(JojosLoadingKey::JOJOS_US_A_51_ROMKEY_RERIP); }; 18 | static sFileRule GetRule51RegOn(uint32_t nRuleId) { return GetRuleInternal(nRuleId, JojosLoadingKey::JOJOS_US_A_51_ROMKEY_RERIP); }; 19 | 20 | uint32_t SaveMultiplePatchFiles(CString strTargetDirectory) override; 21 | }; 22 | -------------------------------------------------------------------------------- /palmod/Game/Game_JojosRPG_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "JOJOSRPG_SNES_DEF.h" 4 | 5 | class CGame_JOJOSRPG_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"jojo no kimyou na bouken (japan).sfc", 0x100000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Jojo's Bizarre Adventure (SNES)", 19 | JOJOSRPG_SNES, 20 | IMGDAT_SECTION_SNES, 21 | JOJOSRPG_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_NOBUTTONS, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | JOJOSRPG_SNES_UNITS, 30 | ARRAYSIZE(JOJOSRPG_SNES_UNITS), 31 | L"JojosRPGE.txt", // Extra filename 32 | 37, // Count of palettes listed in the header 33 | 0x817a, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_JOJOSRPG_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_JusticeLeagueTF_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "JusticeLeagueTF_SNES_DEF.h" 4 | 5 | class CGame_JusticeLeagueTF_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"justice league task force (usa).sfc", 0x280000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Justice League Task Force (USA SNES)", 19 | JusticeLeagueTF_SNES, 20 | IMGDAT_SECTION_SNES, 21 | JusticeLeagueTF_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | JusticeLeagueTF_SNES_UNITS, 30 | ARRAYSIZE(JusticeLeagueTF_SNES_UNITS), 31 | L"JusticeLeagueTFE.txt", // Extra filename 32 | 82, // Count of palettes listed in the header 33 | 0x1a92a, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_JusticeLeagueTF_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_KOF00N_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "KOF00N_A_DEF.h" 4 | 5 | class CGame_KOF00N_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"257-pg2.sp2", 0x400000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"King of Fighters 2000n (Neo-Geo)", 19 | KOF00N_A, 20 | IMGDAT_SECTION_KOF, 21 | KOF00N_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2_AB, 25 | AlphaMode::GameUsesFixedAlpha, 26 | ColMode::COLMODE_RGB666_NEOGEO, 27 | m_sFileLoadingData, 28 | {}, 29 | KOF00N_A_UNITS, 30 | ARRAYSIZE(KOF00N_A_UNITS), 31 | L"KOF00nE.txt", // Extra filename 32 | 1160, // Count of palettes listed in the header 33 | 0xc97f0, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_KOF00N_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_KOF02PS2_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "KOF02PS2_A_DEF.h" 4 | 5 | class CGame_KOF02PS2_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"265ps2-p2.bin", 0x500000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"King of Fighters 2002PS2 (Neo-Geo hack)", 19 | KOF02PS2_A, 20 | IMGDAT_SECTION_KOF, 21 | KOF02PS2_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_NEOGEO, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB666_NEOGEO, 27 | m_sFileLoadingData, 28 | {}, 29 | KOF02PS2_A_UNITS, 30 | ARRAYSIZE(KOF02PS2_A_UNITS), 31 | L"KOF02PS2E.txt", // Extra filename 32 | 2195, // Count of palettes listed in the header 33 | 0x388c00, // Lowest known location used for palettes 34 | }; 35 | 36 | static void DumpAllCharacters(); 37 | 38 | public: 39 | CGame_KOF02PS2_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 40 | 41 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_KOF98AE2016_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "KOF98AE2016_A_DEF.h" 4 | 5 | class CGame_KOF98AE2016_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"242ae-p2.sp2", 0x600000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"KOF98AE2016 (Romhack)", L"242ae-p2.sp2", 0xAC1E9E79, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"KOF98AE2016 (Romhack)", 24 | KOF98AE2016_A, 25 | IMGDAT_SECTION_KOF, 26 | KOF98ae_A_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_BUTTONLABEL_NEOGEO, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_RGB666_NEOGEO, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | KOF98AE2016_A_UNITS, 35 | ARRAYSIZE(KOF98AE2016_A_UNITS), 36 | L"KOF98AE2016E.txt", // Extra filename 37 | 2188, // Count of palettes listed in the header 38 | 0x1b97f0, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_KOF98AE2016_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_KOFXI_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "KOFXI_A_DEF.h" 4 | 5 | class CGame_KOFXI_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"gdrom_KOFXI_v5_AllFighters.bin", 0xf000000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"King of Fighters XI (Atomiswave)", 19 | KOFXI_A, 20 | IMGDAT_SECTION_KOF, 21 | KOFXI_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_KOFXI, 25 | AlphaMode::GameUsesFixedAlpha, 26 | ColMode::COLMODE_RGB555_BE, 27 | m_sFileLoadingData, 28 | {}, 29 | KOFXI_A_UNITS, 30 | ARRAYSIZE(KOFXI_A_UNITS), 31 | L"KOFXIe.txt", // Extra filename 32 | 7680, // Count of palettes listed in the header 33 | 0x1011000, // Lowest known location used for palettes 34 | }; 35 | 36 | static void DumpAllCharacters(); 37 | 38 | public: 39 | CGame_KOFXI_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 40 | 41 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_KabukiKlash_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "KabukiKlash_A_DEF.h" 4 | 5 | class CGame_KabukiKlash_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"092-p1.p1", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Kabuki Klash: Far East of Eden (Neo-Geo)", 19 | KabukiKlash_A, 20 | IMGDAT_SECTION_NEOGEO, 21 | KabukiKlash_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB666_NEOGEO, 27 | m_sFileLoadingData, 28 | {}, 29 | KabukiKlash_A_UNITS, 30 | ARRAYSIZE(KabukiKlash_A_UNITS), 31 | L"KabukiKlashE.txt", // Extra filename 32 | 604, // Count of palettes listed in the header 33 | 0x1f5bc0, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_KabukiKlash_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_LASTBLADE2_A.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "GameDef.h" 3 | #include "Game_LASTBLADE2_A.h" 4 | 5 | CGame_LASTBLADE2_A::CGame_LASTBLADE2_A(uint32_t nConfirmedROMSize, SupportedGamesList nROMToLoad /*= LASTBLADE2_A */) 6 | { 7 | InitializeGame(nConfirmedROMSize, (nROMToLoad == LASTBLADE2_A) ? m_sCoreGameData_NeoGeo : m_sCoreGameData_Steam); 8 | } 9 | 10 | sFileRule CGame_LASTBLADE2_A::GetRule(SupportedGamesList nGameId, uint32_t nUnitId) 11 | { 12 | sFileRule NewFileRule; 13 | 14 | if (nGameId == LASTBLADE2_S) 15 | { 16 | _snwprintf_s(NewFileRule.szFileName, ARRAYSIZE(NewFileRule.szFileName), _TRUNCATE, LASTBLADE2_A_FileLoadingData_Steam.rgRuleList.at(0).szFileName); // Update with the primary expected ROM name here. 17 | NewFileRule.uVerifyVar = static_cast(LASTBLADE2_A_FileLoadingData_Steam.rgRuleList.at(0).uVerifyVar); 18 | } 19 | else 20 | { 21 | _snwprintf_s(NewFileRule.szFileName, ARRAYSIZE(NewFileRule.szFileName), _TRUNCATE, LASTBLADE2_A_FileLoadingData_NeoGeo.rgRuleList.at(0).szFileName); // Update with the primary expected ROM name here. 22 | NewFileRule.uVerifyVar = static_cast(LASTBLADE2_A_FileLoadingData_NeoGeo.rgRuleList.at(0).uVerifyVar); 23 | } 24 | 25 | NewFileRule.uUnitId = 0; 26 | 27 | return NewFileRule; 28 | } 29 | -------------------------------------------------------------------------------- /palmod/Game/Game_MAAB_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "MAAB_A_DEF.h" 4 | 5 | class CGame_MAAB_A : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Million Arthur Arcana Blood (Steam)", 11 | MAAB_A, 12 | IMGDAT_SECTION_ARCANA, 13 | MAAB_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_BGRA8888_LE, 18 | MAAB_A_CharacterData, 19 | }; 20 | 21 | public: 22 | CGame_MAAB_A(uint32_t nConfirmedROMSize) { m_fGameUsesAlphaValue = true; InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_MAAB_A() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, MAAB_A_CharacterData); }; 26 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(MAAB_A_CharacterData); }; 27 | }; 28 | -------------------------------------------------------------------------------- /palmod/Game/Game_MBAACC_S.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "MBAACC_S_DEF.h" 4 | 5 | class CGame_MBAACC_S : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Melty Blood Actress Again Current Code (Steam)", 11 | MBAACC_S, 12 | IMGDAT_SECTION_FRENCHBREAD, 13 | MBAACC_S_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_RGBA8881_32STEPS, 18 | MBAACCCharacterData, 19 | }; 20 | 21 | public: 22 | CGame_MBAACC_S(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_MBAACC_S() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, MBAACCCharacterData); }; 26 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(MBAACCCharacterData); }; 27 | }; 28 | -------------------------------------------------------------------------------- /palmod/Game/Game_MBTL_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "MBTL_S_DEF.h" 4 | 5 | class CGame_MBTL_A : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Melty Blood: Type Lumina (Steam)", 11 | MBTL_A, 12 | IMGDAT_SECTION_FRENCHBREAD, 13 | MBTL_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_RGBA8888_LE, 18 | MBTLCharacterData, 19 | }; 20 | 21 | public: 22 | CGame_MBTL_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_MBTL_A() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | int PostSetPal(uint32_t nUnitId, uint32_t nPalId) override; 26 | 27 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, MBTLCharacterData); }; 28 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(MBTLCharacterData); }; 29 | }; 30 | -------------------------------------------------------------------------------- /palmod/Game/Game_MK1_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "MK1_SNES_DEF.h" 4 | 5 | class CGame_MK1_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Mortal Kombat (USA).sfc", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Mortal Kombat (SNES)", 19 | MK1_SNES, 20 | IMGDAT_SECTION_SNES, 21 | MK1_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | MK1_SNES_UNITS, 30 | ARRAYSIZE(MK1_SNES_UNITS), 31 | L"MK1_SNES_E.txt", // Extra filename 32 | 54, // Count of palettes listed in the header 33 | 0x1c16, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_MK1_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_MK2_SNES.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "GameDef.h" 3 | #include "Game_MK2_SNES.h" 4 | 5 | MK2LoadingKey CGame_MK2_SNES::m_eVersionToLoad = MK2LoadingKey::Version1dot0; 6 | 7 | void CGame_MK2_SNES::SetSpecialRuleForFileName(std::wstring strFileName) 8 | { 9 | const std::map m_rgFileNameToVersion = 10 | { 11 | // these should be all lower case 12 | { L"mortal kombat ii (usa).sfc", MK2LoadingKey::Version1dot0 }, 13 | { L"mortal_kombat_ii_usa.sfc", MK2LoadingKey::Version1dot1 }, 14 | { L"mortal kombat ii (usa) (rev 1).sfc", MK2LoadingKey::Version1dot1 }, 15 | }; 16 | 17 | CString strFileNameLowerCase = strFileName.c_str(); 18 | strFileNameLowerCase.MakeLower(); 19 | 20 | auto result = m_rgFileNameToVersion.find(strFileNameLowerCase.GetString()); 21 | 22 | if (result != m_rgFileNameToVersion.end()) 23 | { 24 | m_eVersionToLoad = result->second; 25 | } 26 | else 27 | { 28 | m_eVersionToLoad = MK2LoadingKey::Version1dot0; 29 | } 30 | 31 | return; 32 | } 33 | 34 | sFileRule CGame_MK2_SNES::GetRule(uint32_t nRuleId) 35 | { 36 | return CGameClassByDir::GetRule(nRuleId, (m_eVersionToLoad == MK2LoadingKey::Version1dot0) ? MK2_SNES_FileLoadingData_V1dot0 : MK2_SNES_FileLoadingData_V1dot1); 37 | } 38 | 39 | CGame_MK2_SNES::CGame_MK2_SNES(uint32_t nConfirmedROMSize) 40 | { 41 | InitializeGame(nConfirmedROMSize, (m_eVersionToLoad == MK2LoadingKey::Version1dot0) ? m_sCoreGameData_V1dot0 : m_sCoreGameData_V1dot1); 42 | } 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_MMX2_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "MMX2_SNES_DEF.h" 4 | 5 | class CGame_MMX2_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"megaman x2 (usa).sfc", 0x180000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Mega Man X2 (SNES)", 19 | MMX2_SNES, 20 | IMGDAT_SECTION_SNES, 21 | MMX2_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_NOBUTTONS, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | MMX2_SNES_UNITS, 30 | ARRAYSIZE(MMX2_SNES_UNITS), 31 | L"MMX2E.txt", // Extra filename 32 | 14, // Count of palettes listed in the header 33 | 0x2b160, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_MMX2_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_MMX3_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "MMX3_SNES_DEF.h" 4 | 5 | class CGame_MMX3_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"megaman x3 (usa).sfc", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Mega Man X3 (SNES)", 19 | MMX3_SNES, 20 | IMGDAT_SECTION_SNES, 21 | MMX3_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_NOBUTTONS, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | MMX3_SNES_UNITS, 30 | ARRAYSIZE(MMX3_SNES_UNITS), 31 | L"MMX3E.txt", // Extra filename 32 | 17, // Count of palettes listed in the header 33 | 0x62400, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_MMX3_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_MMX_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "MMX_SNES_DEF.h" 4 | 5 | class CGame_MMX_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | // We don't supply a size here because there are are a couple different ROMs that have different sizes 12 | { L"megaman x (usa).sfc", static_cast(-1) }, 13 | }, 14 | FileReadType::Sequential, 15 | }; 16 | 17 | const sCoreGameData m_sCoreGameData 18 | { 19 | L"Mega Man X (SNES)", 20 | MMX_SNES, 21 | IMGDAT_SECTION_SNES, 22 | MMX_SNES_IMGIDS_USED, 23 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 24 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 25 | DEF_NOBUTTONS, 26 | AlphaMode::GameDoesNotUseAlpha, 27 | ColMode::COLMODE_BGR555_LE, 28 | m_sFileLoadingData, 29 | {}, 30 | MMX_SNES_UNITS, 31 | ARRAYSIZE(MMX_SNES_UNITS), 32 | L"MMXE.txt", // Extra filename 33 | 89, // Count of palettes listed in the header 34 | 0x2b700, // Lowest known location used for palettes 35 | }; 36 | 37 | public: 38 | CGame_MMX_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 39 | 40 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 41 | }; 42 | -------------------------------------------------------------------------------- /palmod/Game/Game_MSHVSF_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByFile.h" 3 | #include "MSHVSF_P_DEF.h" 4 | 5 | class CGame_MSHVSF_P : public CGameClassByFile 6 | { 7 | private: 8 | const sGCBF_CoreGameData m_sCoreGameData 9 | { 10 | L"MSHVSF (PSX)", 11 | MSHVSF_P, 12 | IMGDAT_SECTION_CPS2, 13 | MSHVSF_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 15 | DEF_BUTTONLABEL_4_VS_HOME, 16 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 17 | AlphaMode::GameDoesNotUseAlpha, 18 | ColMode::COLMODE_BGR555_LE, 19 | MSHVSF_P_UNITS, 20 | }; 21 | 22 | public: 23 | CGame_MSHVSF_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 24 | ~CGame_MSHVSF_P() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 25 | 26 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByFile::GetRule(nRuleId, MSHVSF_P_UNITS); }; 27 | static sFileRule GetNextRule() { return CGameClassByFile::GetNextRule(MSHVSF_P_UNITS); }; 28 | }; 29 | -------------------------------------------------------------------------------- /palmod/Game/Game_MVC2_A_DIR.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_MVC2_A.h" 3 | 4 | class CGame_MVC2_A_DIR : 5 | public CGame_MVC2_A 6 | { 7 | public: 8 | CGame_MVC2_A_DIR(uint32_t nConfirmedROMSize); 9 | ~CGame_MVC2_A_DIR(); 10 | 11 | inline uint32_t GetLocationWithinSIMM(uint32_t nSIMMSetLocation); 12 | inline uint8_t GetSIMMSetForROMLocation(uint32_t nROMLocation); 13 | 14 | //Static functions 15 | static uint32_t m_uRuleCtr; 16 | 17 | static uint32_t GetRuleCtr() { return m_uRuleCtr; }; 18 | static void ResetRuleCtr() { m_uRuleCtr = 0; }; 19 | 20 | static sFileRule GetNextRule(); 21 | static sFileRule GetRule(uint32_t nRuleId); 22 | 23 | BOOL LoadFile(CFile* LoadedFile, uint32_t nSIMMNumber) override; 24 | BOOL SaveFile(CFile* SaveFile, uint32_t nSaveUnit) override; 25 | }; 26 | -------------------------------------------------------------------------------- /palmod/Game/Game_MVC2_P.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_MVC2_P.h" 3 | 4 | CGame_MVC2_P::CGame_MVC2_P(uint32_t nConfirmedROMSize) : CGame_MVC2_D(nConfirmedROMSize, MVC2_P) 5 | { 6 | } 7 | 8 | CGame_MVC2_P::~CGame_MVC2_P() 9 | { 10 | //~CGame_MVC2_D(); 11 | } 12 | 13 | sFileRule CGame_MVC2_P::GetRule(uint32_t nRuleId) 14 | { 15 | sFileRule NewFileRule; 16 | 17 | nRuleId = (nRuleId & RULE_COUNTER_MASK) == RULE_COUNTER_MASK ? (nRuleId & RULE_COUNTER_DEMASK) : MVC2_D_UNITSORT[nRuleId]; 18 | _snwprintf_s(NewFileRule.szFileName, ARRAYSIZE(NewFileRule.szFileName), _TRUNCATE, L"PL%02XPAK.BIN", nRuleId); 19 | 20 | NewFileRule.uUnitId = nRuleId; 21 | NewFileRule.uVerifyVar = (short int)-1; 22 | 23 | return NewFileRule; 24 | } 25 | 26 | sFileRule CGame_MVC2_P::GetNextRule() 27 | { 28 | sFileRule NewFileRule = GetRule(m_uRuleCtr); 29 | 30 | m_uRuleCtr++; 31 | 32 | if (m_uRuleCtr >= MVC2_D_NUMUNIT_WITH_TEAMVIEW) 33 | { 34 | m_uRuleCtr = INVALID_UNIT_VALUE; 35 | } 36 | 37 | return NewFileRule; 38 | } 39 | 40 | LPCWSTR CGame_MVC2_P::GetGameName() 41 | { 42 | return L"MvC2 (Playstation 2)"; 43 | } 44 | -------------------------------------------------------------------------------- /palmod/Game/Game_MVC2_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_MVC2_D.h" 3 | 4 | class CGame_MVC2_P : 5 | public CGame_MVC2_D 6 | { 7 | public: 8 | CGame_MVC2_P(uint32_t nConfirmedROMSize); 9 | ~CGame_MVC2_P(); 10 | 11 | //Static functions 12 | static sFileRule GetNextRule(); 13 | static sFileRule GetRule(uint32_t nRuleId); 14 | 15 | LPCWSTR GetGameName() override; 16 | }; 17 | -------------------------------------------------------------------------------- /palmod/Game/Game_MWarr_A_DIR.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "MWarr_A_DIR_DEF.h" 4 | 5 | class CGame_MWarr_A_DIR : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"prg_ev", 0x80000 }, 12 | { L"prg_od", 0x80000 }, 13 | }, 14 | FileReadType::Interleaved_2FileSets, 15 | }; 16 | 17 | const sCoreGameData m_sCoreGameData 18 | { 19 | L"Mighty Warriors (Elettronica Video Games)", 20 | MWARR_A, 21 | IMGDAT_SECTION_OTHER, 22 | MWarr_A_IMGIDS_USED, 23 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 24 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 25 | DEF_NOBUTTONS, 26 | AlphaMode::GameDoesNotUseAlpha, 27 | ColMode::COLMODE_BGR555_BE, 28 | m_sFileLoadingData, 29 | {}, 30 | MWarr_A_UNITS, 31 | ARRAYSIZE(MWarr_A_UNITS), 32 | L"MWarrE.txt", // Extra filename 33 | 24, // Count of palettes listed in the header 34 | 0x92BB6, // Lowest known location used for palettes 35 | }; 36 | 37 | public: 38 | CGame_MWarr_A_DIR(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 39 | 40 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 41 | static sFileRule GetNextRule() { return CGameClassByDir::GetNextRule(m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_MartialMasters_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "MartialMasters_A_DEF.h" 4 | 5 | class CGame_MartialMasters_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"v104_32m.u9", 0x400000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Martial Masters (PGM)", L"v104_32m.u9", 0xcfd9dff4, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Martial Masters (PGM)", 24 | MartialMasters_A, 25 | IMGDAT_SECTION_PGM, 26 | MartialMasters_A_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_NOBUTTONS, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_RGB555_BE, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | MartialMasters_A_UNITS, 35 | ARRAYSIZE(MartialMasters_A_UNITS), 36 | L"MartialMastersE.txt", // Extra filename 37 | 323, // Count of palettes listed in the header 38 | 0xa9600, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_MartialMasters_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_Matrimelee_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "Matrimelee_A_DEF.h" 4 | 5 | class CGame_Matrimelee_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"066-p1.p1", 0x400000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Matrimelee (Neo-Geo)", 19 | MATRIMELEE_A, 20 | IMGDAT_SECTION_MATRIM, 21 | MATRIM_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_NEOGEO, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB555_BE, 27 | m_sFileLoadingData, 28 | {}, 29 | Matrimelee_A_UNITS, 30 | ARRAYSIZE(Matrimelee_A_UNITS), 31 | L"MatrimeleeE.txt", // Extra filename 32 | 791, // Count of palettes listed in the header 33 | 0x72ba, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_Matrimelee_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_MvC_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "MvC_P_DEF.h" 4 | 5 | class CGame_MVC_P : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Marvel vs Capcom (USA Playstation)", 11 | MVC_P, 12 | IMGDAT_SECTION_CPS2, 13 | MVC_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameDoesNotUseAlpha, 17 | ColMode::COLMODE_BGR555_LE, 18 | MVC_P_CharacterData, 19 | PaletteArrangementStyle::OneButtonLabelEntryPerEachNode, 20 | 0x20 21 | }; 22 | 23 | public: 24 | CGame_MVC_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 25 | ~CGame_MVC_P() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 26 | 27 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, MVC_P_CharacterData); }; 28 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(MVC_P_CharacterData); }; 29 | }; 30 | -------------------------------------------------------------------------------- /palmod/Game/Game_NGBC_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "NGBC_A_DEF.h" 4 | 5 | class CGame_NGBC_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"NeoGeoBattleColliseum.bin", 0xf000000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"NGBC (Atomiswave)", 19 | NGBC_A, 20 | IMGDAT_SECTION_KOF, 21 | NGBC_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_KOFXI, 25 | AlphaMode::GameUsesFixedAlpha, 26 | ColMode::COLMODE_RGB555_BE, 27 | m_sFileLoadingData, 28 | {}, 29 | NGBC_A_UNITS, 30 | ARRAYSIZE(NGBC_A_UNITS), 31 | L"NGBCe.txt", // Extra filename 32 | 3848, // Count of palettes listed in the header 33 | 0x1013000, // Lowest known location used for palettes 34 | }; 35 | 36 | void DumpAllCharacters(); 37 | 38 | public: 39 | CGame_NGBC_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 40 | 41 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_NeoBomberman_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "NeoBomberman_A_DEF.h" 4 | 5 | class CGame_NeoBomberman_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"093-p1.p1", 0x100000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Neo Bomberman (Neo-Geo)", 19 | NeoBomberman_A, 20 | IMGDAT_SECTION_NEOGEO, 21 | NEOBOMBERMAN_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_NOBUTTONS, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB666_NEOGEO, 27 | m_sFileLoadingData, 28 | {}, 29 | NeoBomberman_A_UNITS, 30 | ARRAYSIZE(NeoBomberman_A_UNITS), 31 | L"NeoBombermanE.txt", // Extra filename 32 | 43, // Count of palettes listed in the header 33 | 0xc14ea, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_NeoBomberman_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_P4AU_FightClub.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "P4AU_FightClub_DEF.h" 4 | 5 | class CGame_P4AU_FightClub : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Persona Fight Club Modpack", 11 | P4AU_FightClub, 12 | IMGDAT_SECTION_ARCSYS, 13 | P4AU_S_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_BGRA8888_LE, 18 | PersonaCharacterData_FightClub, 19 | PaletteArrangementStyle::OneButtonLabelEntryPerEachNode, 20 | }; 21 | 22 | public: 23 | CGame_P4AU_FightClub(uint32_t nConfirmedROMSize) { m_fGameUsesAlphaValue = true; InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 24 | ~CGame_P4AU_FightClub() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 25 | 26 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, PersonaCharacterData_FightClub); }; 27 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(PersonaCharacterData_FightClub); }; 28 | }; 29 | -------------------------------------------------------------------------------- /palmod/Game/Game_P4AU_NESICA.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "P4AU_NESICA_DEF.h" 4 | 5 | class CGame_P4AU_NESICA : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Persona 4 Arena Ultimax 2.0 (NESICA)", 11 | P4AU_NESICA, 12 | IMGDAT_SECTION_ARCSYS, 13 | P4AU_S_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_BGRA8888_LE, 18 | PersonaCharacterData_NESICA, 19 | PaletteArrangementStyle::OneButtonLabelEntryPerEachNode, 20 | }; 21 | public: 22 | CGame_P4AU_NESICA(uint32_t nConfirmedROMSize) { m_fGameUsesAlphaValue = true; InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_P4AU_NESICA() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, PersonaCharacterData_NESICA); }; 26 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(PersonaCharacterData_NESICA); }; 27 | }; 28 | -------------------------------------------------------------------------------- /palmod/Game/Game_P4AU_STEAM.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "P4AU_STEAM_DEF.h" 4 | 5 | class CGame_P4AU_STEAM : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Persona 4 Arena Ultimax (Steam)", 11 | P4AU_STEAM, 12 | IMGDAT_SECTION_ARCSYS, 13 | P4AU_S_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_BGRA8888_LE, 18 | PersonaCharacterData_Steam, 19 | PaletteArrangementStyle::OneButtonLabelEntryPerEachNode, 20 | }; 21 | public: 22 | CGame_P4AU_STEAM(uint32_t nConfirmedROMSize) { m_fGameUsesAlphaValue = true; InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_P4AU_STEAM() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, PersonaCharacterData_Steam); }; 26 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(PersonaCharacterData_Steam); }; 27 | }; 28 | -------------------------------------------------------------------------------- /palmod/Game/Game_PrimalRage_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "PrimalRage_SNES_DEF.h" 4 | 5 | class CGame_PrimalRage_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Primal Rage (USA).sfc", 0x300000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Primal Rage (SNES)", 19 | PrimalRage_SNES, 20 | IMGDAT_SECTION_SNES, 21 | PrimalRage_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_PRIMALRAGE, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | PrimalRage_SNES_UNITS, 30 | ARRAYSIZE(PrimalRage_SNES_UNITS), 31 | L"PrimalRageE.txt", // Extra filename 32 | 31, // Count of palettes listed in the header 33 | 0x19071, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_PrimalRage_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_RODSM2_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "RODSM2_A_DEF.h" 4 | 5 | class CGame_RODSM2_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"smbe.05b", 0x80000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Ring of Destruction: Slam Masters 2 (CPS2)", L"smbe.05b", 0x0, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Ring of Destruction: Slam Masters 2 (CPS2)", 24 | RODSM2_A, 25 | IMGDAT_SECTION_CPS2, 26 | RODSM2_A_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_BUTTONLABEL_2, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_RGB444_BE, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | RODSM2_A_UNITS, 35 | ARRAYSIZE(RODSM2_A_UNITS), 36 | L"SlamMasters2E.txt", // Extra filename 37 | 202, // Count of palettes listed in the header 38 | 0x7ce08, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_RODSM2_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_RanmaCRH_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "RANMACRH_SNES_DEF.h" 4 | 5 | class CGame_RANMACRH_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Ranma Nibunnoichi - Chougi Ranbu Hen (J).sfc", 0x280000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Ranma Nibunnoichi: Chougi Ranbu Hen (SNES)", 19 | RANMACRH_SNES, 20 | IMGDAT_SECTION_SNES, 21 | RANMACRH_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_4P, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | RANMACRH_SNES_UNITS, 30 | ARRAYSIZE(RANMACRH_SNES_UNITS), 31 | L"RanmaCRHE.txt", // Extra filename 32 | 52, // Count of palettes listed in the header 33 | 0x62be2, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_RANMACRH_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_RanmaHB_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "RANMAHB_SNES_DEF.h" 4 | 5 | class CGame_RANMAHB_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"ranma 1-2 - hard battle (usa).sfc", 0x180000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Ranma Nibunnoichi: Hard Battle (SNES)", 19 | RANMAHB_SNES, 20 | IMGDAT_SECTION_SNES, 21 | RANMAHB_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | RANMAHB_SNES_UNITS, 30 | ARRAYSIZE(RANMAHB_SNES_UNITS), 31 | L"RanmaHBE.txt", // Extra filename 32 | 24, // Count of palettes listed in the header 33 | 0x181e1, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_RANMAHB_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_SAMSHO3_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "SAMSHO3_A_DEF.h" 4 | 5 | class CGame_SAMSHO3_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"087-p5.p5", 0x100000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Samurai Shodown III (Neo-Geo)", 19 | SAMSHO3_A, 20 | IMGDAT_SECTION_SAMSHO, 21 | SAMSHO3_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_SAMSHO3, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB666_NEOGEO, 27 | m_sFileLoadingData, 28 | {}, 29 | SAMSHO3_A_UNITS, 30 | ARRAYSIZE(SAMSHO3_A_UNITS), 31 | L"SAMSHO3E.txt", // Extra filename 32 | 942, // Count of palettes listed in the header 33 | 0x0, // Lowest known location used for palettes 34 | }; 35 | 36 | static void DumpPaletteHeaders(); 37 | 38 | public: 39 | CGame_SAMSHO3_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 40 | 41 | BOOL UpdatePalImg(int Node01, int Node02, int Node03, int Node04); 42 | 43 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 44 | }; 45 | -------------------------------------------------------------------------------- /palmod/Game/Game_SFIII1_A_DIR.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Game_SFIII1_A.h" 3 | 4 | class CGame_SFIII1_A_DIR : 5 | public CGame_SFIII1_A 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"sfiii-simm5.0", 0x200000 }, 12 | { L"sfiii-simm5.1", 0x200000 }, 13 | }, 14 | FileReadType::Interleaved_2FileSets, 15 | }; 16 | 17 | const sCoreGameData m_sCoreGameData 18 | { 19 | L"SFIII:New Generation (Arcade Rerip)", 20 | SFIII1_A_DIR, 21 | IMGDAT_SECTION_SF3, 22 | SFIII1_A_IMGIDS_USED, 23 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 24 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 25 | DEF_BUTTONLABEL6, 26 | AlphaMode::GameUsesFixedAlpha, 27 | ColMode::COLMODE_RGB555_LE, 28 | m_sFileLoadingData, 29 | {}, 30 | SFIII1_A_50_UNITS, 31 | ARRAYSIZE(SFIII1_A_50_UNITS), 32 | L"SFIII1e.txt", // Extra filename 33 | 631, // Count of palettes listed in the header 34 | 0x3b0000, // Lowest known location used for palettes 35 | }; 36 | 37 | public: 38 | CGame_SFIII1_A_DIR(uint32_t nConfirmedROMSize) : CGame_SFIII1_A(nConfirmedROMSize, false) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 39 | 40 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 41 | static sFileRule GetNextRule() { return CGameClassByDir::GetNextRule(m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_SFIII3_D.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "gameclass.h" 3 | 4 | class CGame_SFIII3_D : public CGameClass 5 | { 6 | private: 7 | //Used for GetPalOffset 8 | int m_nCurrentPaletteROMLocation = 0; 9 | int m_nCurrPalSz = 0; 10 | 11 | void GetPalOffsSz(uint32_t nUnitId, uint32_t nPalId); 12 | 13 | static void InitializeStatics(); 14 | 15 | public: 16 | CGame_SFIII3_D(); 17 | ~CGame_SFIII3_D(); 18 | 19 | //Static functions / variables 20 | static CDescTree m_MainDescTree; 21 | 22 | // static CDescTree * GetMainTree(); 23 | static sDescTreeNode* InitDescTree(); 24 | //static void SetExtraDesc(sDescTreeNode * srcNode, int nButtonIndex); 25 | 26 | static uint32_t m_uRuleCtr; 27 | static sFileRule GetNextRule(); 28 | static sFileRule GetRule(uint32_t nUnitId); 29 | 30 | static uint32_t GetRuleCtr() { return m_uRuleCtr; }; 31 | static void ResetRuleCtr() { m_uRuleCtr = 0; }; 32 | 33 | //Extra palette function 34 | static uint32_t GetBasicAmt(uint32_t nUnitId); 35 | 36 | //Normal functions 37 | CDescTree* GetMainTree(); 38 | 39 | uint32_t GetPaletteCountForUnit(uint32_t nUnitId) override; 40 | 41 | void CreateDefPal(sDescNode* srcNode, uint32_t nSepId) override; 42 | BOOL LoadFile(CFile* LoadedFile, uint32_t nUnitId = 0) override; 43 | BOOL SaveFile(CFile* SaveFile, uint32_t nUnitId = 0) override; 44 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 45 | 46 | COLORREF* CreatePal(uint32_t nUnitId, uint32_t nPalId) override; 47 | }; 48 | -------------------------------------------------------------------------------- /palmod/Game/Game_SHAQFU_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "SHAQFU_SNES_DEF.h" 4 | 5 | class CGame_SHAQFU_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Shaq Fu (USA).sfc", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Shaq Fu (SNES)", 19 | SHAQFU_SNES, 20 | IMGDAT_SECTION_SNES, 21 | SHAQFU_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | SHAQFU_SNES_UNITS, 30 | ARRAYSIZE(SHAQFU_SNES_UNITS), 31 | L"ShaqFu_SNES_E.txt", // Extra filename 32 | 34, // Count of palettes listed in the header 33 | 0x13ffac, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_SHAQFU_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_SVG_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "SVG_SNES_DEF.h" 4 | 5 | class CGame_SVG_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Super Variable Geo (J).sfc", 0x300000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Super Variable Geo (SNES)", 19 | SVG_SNES, 20 | IMGDAT_SECTION_SNES, 21 | SVG_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | SVG_SNES_UNITS, 30 | ARRAYSIZE(SVG_SNES_UNITS), 31 | L"SVGE.txt", // Extra filename 32 | 45, // Count of palettes listed in the header 33 | 0xb870, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_SVG_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_SavageReign_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "SAVAGEREIGN_A_DEF.h" 4 | 5 | class CGame_SAVAGEREIGN_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"059-p1.p1", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Savage Reign (Neo-Geo)", L"059-p1.p1", 0x01d4e9c0, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Savage Reign (Neo-Geo)", 24 | SAVAGEREIGN_A, 25 | IMGDAT_SECTION_NEOGEO, 26 | SAVAGEREIGN_A_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_BUTTONLABEL_2_AB, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_RGB666_NEOGEO, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | SAVAGEREIGN_A_UNITS, 35 | ARRAYSIZE(SAVAGEREIGN_A_UNITS), 36 | L"SavageReignE.txt", // Extra filename 37 | 308, // Count of palettes listed in the header 38 | 0xa3000, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_SAVAGEREIGN_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_TMNTTF_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "TMNTTF_SNES_DEF.h" 4 | 5 | class CGame_TMNTTF_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"sns-ky-0.u1", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"TMNT: Tournament Fighters (SNES)", 19 | TMNTTF_SNES, 20 | IMGDAT_SECTION_SNES, 21 | TMNTTF_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | TMNTTF_SNES_UNITS, 30 | ARRAYSIZE(TMNTTF_SNES_UNITS), 31 | L"TMNTTFE.txt", // Extra filename 32 | 211, // Count of palettes listed in the header 33 | 0x8000, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_TMNTTF_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | BOOL UpdatePalImg(int Node01 = -1, int Node02 = -1, int Node03 = -1, int Node04 = -1); 40 | 41 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 42 | }; 43 | -------------------------------------------------------------------------------- /palmod/Game/Game_TattooAsns_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "TattooAsns_A_DEF.h" 4 | 5 | class CGame_TattooAsns_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"pp44.cpu", 0x80000 }, 12 | { L"pp45.cpu", 0x80000 }, 13 | }, 14 | FileReadType::Interleaved_Read2Bytes_LE, 15 | }; 16 | 17 | const sCoreGameData m_sCoreGameData 18 | { 19 | L"Tattoo Assassins (DECO32)", 20 | TattooAsns_A, 21 | IMGDAT_SECTION_OTHER, 22 | TattooAsns_A_IMGIDS_USED, 23 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 24 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 25 | DEF_BUTTONLABEL7_TattooAsns, 26 | AlphaMode::GameDoesNotUseAlpha, 27 | ColMode::COLMODE_BGR888, 28 | m_sFileLoadingData, 29 | {}, 30 | TattooAsns_A_UNITS, 31 | ARRAYSIZE(TattooAsns_A_UNITS), 32 | L"TattooAsns_A_E.txt", // Extra filename 33 | 71, // Count of palettes listed in the header 34 | 0x2b81c, // Lowest known location used for palettes 35 | }; 36 | 37 | 38 | public: 39 | CGame_TattooAsns_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 40 | 41 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 42 | static sFileRule GetNextRule() { return CGameClassByDir::GetNextRule(m_sFileLoadingData); }; 43 | }; 44 | -------------------------------------------------------------------------------- /palmod/Game/Game_TopF2005_Sega.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "TOPF2005_SEGA_DEF.h" 4 | 5 | class CGame_TOPF2005_SEGA : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"top fighter 2005 (unl).bin", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const std::vector m_rgCRC32Data = 17 | { 18 | { L"Top Fighter 2005 (Mega Drive)", L"top fighter 2005 (unl).bin", 0x174DEFE6, 0 }, 19 | }; 20 | 21 | const sCoreGameData m_sCoreGameData 22 | { 23 | L"Top Fighter 2005 (Mega Drive)", 24 | TOPF2005_SEGA, 25 | IMGDAT_SECTION_SEGA, 26 | TOPF2005_SEGA_IMGIDS_USED, 27 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 28 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 29 | DEF_BUTTONLABEL_NEOGEO, 30 | AlphaMode::GameDoesNotUseAlpha, 31 | ColMode::COLMODE_RGB333, 32 | m_sFileLoadingData, 33 | m_rgCRC32Data, 34 | TOPF2005_UNITS, 35 | ARRAYSIZE(TOPF2005_UNITS), 36 | L"TOPF2005e.txt", // Extra filename 37 | 32, // Count of palettes listed in the header 38 | 0x24798, // Lowest known location used for palettes 39 | }; 40 | 41 | public: 42 | CGame_TOPF2005_SEGA(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 43 | 44 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 45 | }; 46 | -------------------------------------------------------------------------------- /palmod/Game/Game_UMK3_DS.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "UMK3_DS_DEF.h" 4 | 5 | class CGame_UMK3_DS : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Ultimate Mortal Kombat (USA) (En,Fr,De,Es,It).nds", 0x4000000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Ultimate Mortal Kombat 3 (USA DS)", 19 | UMK3_DS, 20 | IMGDAT_SECTION_DS, 21 | UMK3_DS_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB555_BE, 27 | m_sFileLoadingData, 28 | {}, 29 | UMK3_DS_UNITS, 30 | ARRAYSIZE(UMK3_DS_UNITS), 31 | L"UMK3_DS_E.txt", // Extra filename 32 | 45, // Count of palettes listed in the header 33 | 0x1b26a0, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_UMK3_DS(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_UMK3_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "UMK3_SNES_DEF.h" 4 | 5 | class CGame_UMK3_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"Ultimate Mortal Kombat 3 (USA).sfc", 0x400000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Ultimate Mortal Kombat 3 (USA SNES)", 19 | UMK3_SNES, 20 | IMGDAT_SECTION_SNES, 21 | UMK3_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | UMK3_SNES_UNITS, 30 | ARRAYSIZE(UMK3_SNES_UNITS), 31 | L"UMK3_SNES_E.txt", // Extra filename 32 | 70, // Count of palettes listed in the header 33 | 0x7155, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_UMK3_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_UNICLR_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByUnitPerFile.h" 3 | #include "UNICLR_S_DEF.h" 4 | 5 | class CGame_UNICLR_A : public CGameClassPerUnitPerFile 6 | { 7 | private: 8 | const sGCPUPF_CoreGameData m_sCoreGameData 9 | { 10 | L"Under Night In-Birth Exe:Late[cl-r] (Steam)", 11 | UNICLR_A, 12 | IMGDAT_SECTION_FRENCHBREAD, 13 | UNICLR_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_MAX }, 15 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 16 | AlphaMode::GameUsesFixedAlpha, 17 | ColMode::COLMODE_RGBA8888_LE, 18 | UNICLRCharacterData, 19 | }; 20 | 21 | public: 22 | CGame_UNICLR_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 23 | ~CGame_UNICLR_A() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 24 | 25 | int PostSetPal(uint32_t nUnitId, uint32_t nPalId) override; 26 | 27 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassPerUnitPerFile::GetRule(nRuleId, UNICLRCharacterData); }; 28 | static sFileRule GetNextRule() { return CGameClassPerUnitPerFile::GetNextRule(UNICLRCharacterData); }; 29 | }; 30 | -------------------------------------------------------------------------------- /palmod/Game/Game_Venture_A.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_VENTURE_A.h" 3 | 4 | CGame_VENTURE_A::VentureLoadingKey CGame_VENTURE_A::m_eVersionToLoad = VentureLoadingKey::ROM50; 5 | 6 | void CGame_VENTURE_A::SetSpecialRuleForFileName(std::wstring strFileName) 7 | { 8 | const std::map m_rgFileNameToVersion = 9 | { 10 | // these should be all lower case 11 | { L"31", VentureLoadingKey::ROM31 }, 12 | { L"50", VentureLoadingKey::ROM50 }, 13 | }; 14 | 15 | CString strFileNameLowerCase = strFileName.c_str(); 16 | strFileNameLowerCase.MakeLower(); 17 | 18 | auto result = m_rgFileNameToVersion.find(strFileNameLowerCase.GetString()); 19 | 20 | if (result != m_rgFileNameToVersion.end()) 21 | { 22 | m_eVersionToLoad = result->second; 23 | } 24 | else 25 | { 26 | m_eVersionToLoad = VentureLoadingKey::ROM50; 27 | } 28 | 29 | return; 30 | } 31 | 32 | CGame_VENTURE_A::CGame_VENTURE_A(uint32_t nConfirmedROMSize) 33 | { 34 | InitializeGame(nConfirmedROMSize, (m_eVersionToLoad == VentureLoadingKey::ROM31) ? m_sCoreGameData_31 : m_sCoreGameData_50); 35 | } 36 | 37 | sFileRule CGame_VENTURE_A::GetRule(uint32_t nRuleId) 38 | { 39 | return CGameClassByDir::GetRule(nRuleId, (m_eVersionToLoad == VentureLoadingKey::ROM31) ? m_sFileLoadingData_31 : m_sFileLoadingData_50); 40 | } 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_WakuWaku7_A.cpp: -------------------------------------------------------------------------------- 1 | #include "StdAfx.h" 2 | #include "Game_WakuWaku7_A.h" 3 | 4 | BOOL CGame_WakuWaku7_A::UpdatePalImg(int Node01, int Node02, int Node03, int Node04) 5 | { 6 | ClearSrcPal(); 7 | 8 | if (Node01 == -1) 9 | { 10 | return FALSE; 11 | } 12 | 13 | sDescNode* NodeGet = GetMainTree()->GetDescNode(Node01, Node02, Node03, Node04); 14 | 15 | if (NodeGet == nullptr) 16 | { 17 | return FALSE; 18 | } 19 | 20 | // Waku uses a custom UpdatePalImg because the paired palette count varies between 4 and 5 21 | switch (GetCollectionCountForUnit(NodeGet->uUnitId)) 22 | { 23 | case 5: // A/B/C/D/Bonus 24 | m_pButtonLabelSet = DEF_BUTTONLABEL_NEOGEO; 25 | break; 26 | case 6: // A/B/C/D/Dark/Bonus 27 | default: 28 | m_pButtonLabelSet = DEF_BUTTONLABEL_WAKUWAKU7_FIVE; 29 | break; 30 | } 31 | 32 | return CGameClassByDir::UpdatePalImg(Node01, Node02, Node03, Node04); 33 | } 34 | -------------------------------------------------------------------------------- /palmod/Game/Game_Windjammers_A.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "Windjammers_A_DEF.h" 4 | 5 | class CGame_Windjammers_A : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"066-p1.p1", 0x100000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"Windjammers (Neo-Geo)", 19 | WINDJAMMERS_A, 20 | IMGDAT_SECTION_WINDJAMMERS, 21 | WINDJAMMERS_A_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_BUTTONLABEL_2, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_RGB666_NEOGEO, 27 | m_sFileLoadingData, 28 | {}, 29 | Windjammers_A_UNITS, 30 | ARRAYSIZE(Windjammers_A_UNITS), 31 | L"WindjammersE.txt", // Extra filename 32 | 35, // Count of palettes listed in the header 33 | 0x30080, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_Windjammers_A(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_XMMA_SNES.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByDir.h" 3 | #include "XMMA_SNES_DEF.h" 4 | 5 | class CGame_XMMA_SNES : public CGameClassByDir 6 | { 7 | private: 8 | static inline const sDirectoryLoadingData m_sFileLoadingData = 9 | { 10 | { 11 | { L"X-Men - Mutant Apocalypse (USA).sfc", 0x200000 }, 12 | }, 13 | FileReadType::Sequential, 14 | }; 15 | 16 | const sCoreGameData m_sCoreGameData 17 | { 18 | L"X-Men: Mutant Apocalypse (SNES)", 19 | XMMA_SNES, 20 | IMGDAT_SECTION_SNES, 21 | XMMA_SNES_IMGIDS_USED, 22 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 23 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 24 | DEF_NOBUTTONS, 25 | AlphaMode::GameDoesNotUseAlpha, 26 | ColMode::COLMODE_BGR555_LE, 27 | m_sFileLoadingData, 28 | {}, 29 | XMMA_SNES_UNITS, 30 | ARRAYSIZE(XMMA_SNES_UNITS), 31 | L"XMMAE.txt", // Extra filename 32 | 65, // Count of palettes listed in the header 33 | 0xa860, // Lowest known location used for palettes 34 | }; 35 | 36 | public: 37 | CGame_XMMA_SNES(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 38 | 39 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByDir::GetRule(nRuleId, m_sFileLoadingData); }; 40 | }; 41 | -------------------------------------------------------------------------------- /palmod/Game/Game_XMVSF_P.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GameClassByFile.h" 3 | #include "XMVSF_P_DEF.h" 4 | 5 | class CGame_XMVSF_P : public CGameClassByFile 6 | { 7 | private: 8 | const sGCBF_CoreGameData m_sCoreGameData 9 | { 10 | L"XMvSF (PSX)", 11 | XMVSF_P, 12 | IMGDAT_SECTION_CPS2, 13 | XMVSF_A_IMGIDS_USED, 14 | { NO_SPECIAL_OPTIONS, PALWriteOutputOptions::WRITE_16 }, 15 | DEF_BUTTONLABEL_4_VS_HOME, 16 | eImageOutputSpriteDisplay::DISPLAY_SPRITES_LEFTTORIGHT, 17 | AlphaMode::GameDoesNotUseAlpha, 18 | ColMode::COLMODE_BGR555_LE, 19 | XMVSF_P_UNITS, 20 | }; 21 | 22 | public: 23 | CGame_XMVSF_P(uint32_t nConfirmedROMSize) { InitializeGame(nConfirmedROMSize, m_sCoreGameData); }; 24 | ~CGame_XMVSF_P() { ClearDataBuffer(); FlushChangeTrackingArray(); }; 25 | 26 | static sFileRule GetRule(uint32_t nRuleId) { return CGameClassByFile::GetRule(nRuleId, XMVSF_P_UNITS); }; 27 | static sFileRule GetNextRule() { return CGameClassByFile::GetNextRule(XMVSF_P_UNITS); }; 28 | }; 29 | -------------------------------------------------------------------------------- /palmod/Game/ImgTicket.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sImgTicket 4 | { 5 | int32_t nUnitId = 0; 6 | int32_t nImgId = 0; 7 | 8 | int nXOffs = 0; 9 | int nYOffs = 0; 10 | 11 | BlendMode nBlendMode = BlendMode::Alpha; 12 | 13 | sImgTicket* NextTicket = nullptr; 14 | }; 15 | -------------------------------------------------------------------------------- /palmod/Game/KOF02PS2_A_DEF.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Game/KOF02PS2_A_DEF.h -------------------------------------------------------------------------------- /palmod/Game/KOF02UM_S_DEF.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Game/KOF02UM_S_DEF.h -------------------------------------------------------------------------------- /palmod/Game/KOF02UM_S_DIR_DEF.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Game/KOF02UM_S_DIR_DEF.h -------------------------------------------------------------------------------- /palmod/Game/NEOGEO_A_DEF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | const sGame_PaletteDataset NEOGEO_A_STUB_PALETTE[] = 4 | { 5 | { L"Test Only - Don't Edit", 0x0, 0x20 }, 6 | }; 7 | 8 | const sDescTreeNode NEOGEO_A_STUB_COLLECTION[] = 9 | { 10 | { L"Stub Palette Set", DESC_NODETYPE_TREE, (void*)NEOGEO_A_STUB_PALETTE, ARRAYSIZE(NEOGEO_A_STUB_PALETTE) }, 11 | }; 12 | 13 | const sDescTreeNode NEOGEO_A_UNITS[] = 14 | { 15 | { L"Stub Unit", DESC_NODETYPE_TREE, (void*)NEOGEO_A_STUB_COLLECTION, ARRAYSIZE(NEOGEO_A_STUB_COLLECTION) }, 16 | }; 17 | 18 | // We want the user to use the extras file, so don't preload. 19 | constexpr auto NEOGEO_A_NUMUNIT = 0; 20 | 21 | const stExtraDef UNKNOWN_GAME_EXTRAS_LIST[] = 22 | { 23 | // Start 24 | { UNIT_START_VALUE }, 25 | 26 | { 0, L"Configure your Extras file.", 0, 0x20 }, 27 | 28 | { INVALID_UNIT_VALUE } 29 | }; 30 | -------------------------------------------------------------------------------- /palmod/Game/ROTD_A_DEF.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Game/ROTD_A_DEF.h -------------------------------------------------------------------------------- /palmod/Game/ShellSort.h: -------------------------------------------------------------------------------- 1 | //#pragma once 2 | 3 | void ShellSort(double * fpSrc, double * fpExtra1, double * fpExtra2, int * pPalette, UINT16 * pTable, int max); 4 | void ccRGBtoXYZ(double r, double g, double b, double* x, double* y, double* z); 5 | -------------------------------------------------------------------------------- /palmod/Game/mvc2_validate.h: -------------------------------------------------------------------------------- 1 | 2 | void dump_palettes(UINT16 char_id, UINT16 source_palette, UINT16 compare_char, UINT16 destination_palette); 3 | void DumpAllPalettes(); 4 | bool IsPaletteOutOfSync(UINT16 char_id, UINT16 source_palette, UINT16 compare_char, UINT16 destination_palette); 5 | void ValidateAllPalettes(BOOL& fChangesWereMade, std::vector& rgPaletteChangeArray); 6 | void FixAllProblemPalettes(std::vector& rgPaletteChangeArray); 7 | -------------------------------------------------------------------------------- /palmod/ImgDat.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MAX_GAMES 4 4 | #define MAX_IMAGE 16 5 | 6 | #include 7 | #include "ImgInfoList.h" 8 | 9 | class CImgDat { 10 | private: 11 | 12 | std::map* nImgMap = nullptr; 13 | 14 | uint16_t nCurGameImgAmt = 0x0000; 15 | 16 | uint16_t nCurGameFlag = 0xFFFF; 17 | uint16_t nCurImgGameFlag = 0xFFFF; 18 | 19 | uint8_t uReadGameFlag = 0x00; 20 | uint16_t uReadNumImgs = 0x0000; 21 | uint32_t uReadNextImgLoc = 0x00000000; 22 | 23 | bool imageBufferFlushed = false; 24 | bool imageBufferPrepped = false; 25 | bool PrepImageBuffer(std::vector prgGameImageSet, uint8_t uGameFlag); 26 | bool sameGameAlreadyLoaded(uint8_t uGameFlag, uint8_t uImgGameFlag); 27 | 28 | void SanityCheckImgDat(ULONGLONG nFileSize, uint32_t nCurrentDaystamp, uint8_t nNumGames); 29 | 30 | CFile ImgDatFile; 31 | 32 | BOOL m_fOnTheFly = FALSE; 33 | 34 | public: 35 | CImgDat(); 36 | ~CImgDat(); 37 | 38 | BOOL LoadGameImages(wchar_t* lpszLoadFile, uint8_t uGameFlag, uint8_t uImgGameFlag, uint32_t uGameUnitAmt, std::vector prgGameImageSet, BOOL fLoadAll = TRUE); 39 | sImgDef* GetImageDef(uint32_t uUnitId, uint16_t uImgId); 40 | bool FlushImageBuffer(); 41 | uint8_t* DecodeImg(uint8_t* pSrcImgData, uint32_t uiDataSz, uint16_t uiImgWidth, uint16_t uiImgHeight, uint8_t uiBPP); 42 | 43 | uint16_t GetCurrImgFlag() { return nCurImgGameFlag; }; 44 | uint8_t* GetImgData(sImgDef* pCurrImg, uint8_t uGameFlag, uint16_t nCurrentUnitId, uint8_t nCurrentImgId); 45 | 46 | void CloseImgFile(); 47 | }; 48 | -------------------------------------------------------------------------------- /palmod/ImgInfoList.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "stdafx.h" 4 | 5 | //#ifndef IMGINFOLIST_H 6 | //#define IMGINFOLIST_H 7 | struct sImgDef 8 | { 9 | uint16_t uImgWidth = 0; 10 | uint16_t uImgHeight = 0; 11 | 12 | uint8_t nCompressionType = 0; 13 | uint32_t uDataSize = 0; 14 | uint32_t uThisImgLoc = 0; 15 | uint8_t* pImgData = nullptr; 16 | }; 17 | 18 | struct ImgInfoNode 19 | { 20 | uint16_t imgID = 0xFFFF; 21 | sImgDef* imgInfo = nullptr; 22 | ImgInfoNode* nextNode = nullptr; 23 | }; 24 | 25 | class ImgInfoList 26 | { 27 | private: 28 | ImgInfoNode* headNode = nullptr; 29 | uint16_t listCount = 0; 30 | 31 | ImgInfoNode* makeNode(uint16_t imgID); 32 | ImgInfoNode* getToNode(uint16_t desiredImgID); 33 | 34 | public: 35 | bool isEmpty(); 36 | ImgInfoList(); 37 | ~ImgInfoList(); 38 | void listAllImgIDs(); 39 | sImgDef* getImgDef(uint16_t imgID) { return (getToNode(imgID)->imgInfo); }; 40 | bool valueExists(uint16_t desiredImgID); 41 | bool insertNode(uint16_t imgID); 42 | uint16_t size() { return listCount; }; 43 | }; 44 | //#endif 45 | -------------------------------------------------------------------------------- /palmod/PalMod.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29709.97 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PalMod", "PalMod.vcxproj", "{03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Debug|x64.ActiveCfg = Debug|x64 17 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Debug|x64.Build.0 = Debug|x64 18 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Debug|x86.ActiveCfg = Debug|Win32 19 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Debug|x86.Build.0 = Debug|Win32 20 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Release|x64.ActiveCfg = Release|x64 21 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Release|x64.Build.0 = Release|x64 22 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Release|x86.ActiveCfg = Release|Win32 23 | {03C6A62D-92A8-42FF-ADE8-176FECF4EB8D}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {1A989839-F273-4FFF-AD76-6D2B2639A9A5} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /palmod/PalMod.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | PalMod.rc 5 | 6 | -------------------------------------------------------------------------------- /palmod/RLEData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace RLEData 4 | { 5 | uint8_t* RLEDecodeImg(uint8_t* pSrcImgData, uint32_t uiDataSz, uint16_t uiImgWidth, uint16_t uiImgHeight); 6 | uint8_t* BitMaskRLEDecodeImg(uint8_t* pSrcImgData, uint32_t uiDataSz, uint16_t uiImgWidth, uint16_t uiImgHeight); 7 | }; 8 | -------------------------------------------------------------------------------- /palmod/Release/CodeAnalysisResultManifest.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Release/CodeAnalysisResultManifest.txt -------------------------------------------------------------------------------- /palmod/Release/KIE.txt: -------------------------------------------------------------------------------- 1 | ;No existing Extras file for this game was found, so PalMod created one for you. 2 | ;Please refer to the Read Me for a brief guide to Extras files, or the longer guide on the PalMod site. 3 | 4 | ;When you are done making changes to the Extras file, reload the game to see those palettes. 5 | -------------------------------------------------------------------------------- /palmod/Release/PalMod.exe.recipe: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C:\Users\preppy\Desktop\PalMod\drew\palmod\Release\PalMod.exe 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /palmod/Release/bgbmp.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/Release/bgbmp.bmp -------------------------------------------------------------------------------- /palmod/SettDlg.cpp: -------------------------------------------------------------------------------- 1 | // SettDlg.cpp : implementation file 2 | // 3 | #include "stdafx.h" 4 | #include "PalMod.h" 5 | #include "SettDlg.h" 6 | 7 | // CSettDlg dialog 8 | 9 | IMPLEMENT_DYNAMIC(CSettDlg, CDialog) 10 | 11 | CSettDlg::CSettDlg(CWnd* pParent /*=NULL*/) 12 | : CDialog(CSettDlg::IDD, pParent) 13 | { 14 | 15 | } 16 | 17 | CSettDlg::~CSettDlg() 18 | { 19 | } 20 | 21 | void CSettDlg::DoDataExchange(CDataExchange* pDX) 22 | { 23 | CDialog::DoDataExchange(pDX); 24 | DDX_Check(pDX, IDC_CALPHATRANS, m_fAllowAlphaChanges); 25 | DDX_Check(pDX, IDC_CUPDSUPP, m_fUpdSupp); 26 | DDX_Check(pDX, IDC_SETT_FORCEPEER, m_fPreviewIsAChild); 27 | } 28 | 29 | BEGIN_MESSAGE_MAP(CSettDlg, CDialog) 30 | END_MESSAGE_MAP() 31 | 32 | // CSettDlg message handlers 33 | -------------------------------------------------------------------------------- /palmod/SettDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // CSettDlg dialog 4 | 5 | class CSettDlg : public CDialog 6 | { 7 | DECLARE_DYNAMIC(CSettDlg) 8 | 9 | public: 10 | CSettDlg(CWnd* pParent = NULL); // standard constructor 11 | virtual ~CSettDlg(); 12 | 13 | // Dialog Data 14 | enum { IDD = IDD_SETT_DIALOG }; 15 | 16 | protected: 17 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 18 | 19 | DECLARE_MESSAGE_MAP() 20 | 21 | public: 22 | BOOL m_fAllowAlphaChanges = FALSE; 23 | BOOL m_fUpdSupp = TRUE; 24 | BOOL m_fPreviewIsAChild = TRUE; 25 | }; 26 | -------------------------------------------------------------------------------- /palmod/debugutil.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define k_ContextMenuCopyCanary L"ContextCopy" 4 | 5 | const LPCWSTR ppszKnownCanaries[] = 6 | { 7 | k_ContextMenuCopyCanary, 8 | }; 9 | 10 | class CDebugHelper 11 | { 12 | public: 13 | CDebugHelper(); 14 | ~CDebugHelper(); 15 | 16 | void AddCanary(LPCWSTR pszCanaryName); 17 | void FreeCanary(LPCWSTR pszCanaryName); 18 | 19 | void DebugPrint(LPCWSTR pszOwningCanary, LPCSTR pszMessage); 20 | 21 | private: 22 | LPCWSTR m_pczCanaryRoot = L"debugCanary_%s"; 23 | 24 | bool CanaryWasKilled(LPCWSTR pszCanaryName); 25 | bool HaveOutputFile(); 26 | 27 | enum class eCanaryState 28 | { 29 | CANARY_FREED, 30 | CANARY_PRESENT, 31 | CANARY_TOASTED, 32 | }; 33 | 34 | CFile m_debugNotes; 35 | bool m_fDebugFileIsOpen = false; 36 | bool rgfCanaryStatus[ARRAYSIZE(ppszKnownCanaries)] = { false }; 37 | }; 38 | 39 | extern CDebugHelper g_DebugHelper; 40 | -------------------------------------------------------------------------------- /palmod/lodepng/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2005-2018 Lode Vandevenne 2 | 3 | This software is provided 'as-is', without any express or implied 4 | warranty. In no event will the authors be held liable for any damages 5 | arising from the use of this software. 6 | 7 | Permission is granted to anyone to use this software for any purpose, 8 | including commercial applications, and to alter it and redistribute it 9 | freely, subject to the following restrictions: 10 | 11 | 1. The origin of this software must not be misrepresented; you must not 12 | claim that you wrote the original software. If you use this software 13 | in a product, an acknowledgment in the product documentation would be 14 | appreciated but is not required. 15 | 16 | 2. Altered source versions must be plainly marked as such, and must not be 17 | misrepresented as being the original software. 18 | 19 | 3. This notice may not be removed or altered from any source 20 | distribution. 21 | 22 | -------------------------------------------------------------------------------- /palmod/lodepng/Makefile: -------------------------------------------------------------------------------- 1 | # This makefile only makes the unit test, benchmark and pngdetail and showpng 2 | # utilities. It does not make the PNG codec itself as shared or static library. 3 | # That is because: 4 | # LodePNG itself has only 1 source file (lodepng.cpp, can be renamed to 5 | # lodepng.c) and is intended to be included as source file in other projects and 6 | # their build system directly. 7 | 8 | 9 | CC ?= gcc 10 | CXX ?= g++ 11 | 12 | override CFLAGS := -W -Wall -Wextra -ansi -pedantic -O3 -Wno-unused-function $(CFLAGS) 13 | override CXXFLAGS := -W -Wall -Wextra -ansi -pedantic -O3 $(CXXFLAGS) 14 | 15 | all: unittest benchmark pngdetail showpng 16 | 17 | %.o: %.cpp 18 | @mkdir -p `dirname $@` 19 | $(CXX) -I ./ $(CXXFLAGS) -c $< -o $@ 20 | 21 | unittest: lodepng.o lodepng_util.o lodepng_unittest.o 22 | $(CXX) $^ $(CXXFLAGS) -o $@ 23 | 24 | benchmark: lodepng.o lodepng_benchmark.o 25 | $(CXX) $^ $(CXXFLAGS) -lSDL2 -o $@ 26 | 27 | pngdetail: lodepng.o lodepng_util.o pngdetail.o 28 | $(CXX) $^ $(CXXFLAGS) -o $@ 29 | 30 | showpng: lodepng.o examples/example_sdl.o 31 | $(CXX) -I ./ $^ $(CXXFLAGS) -lSDL2 -o $@ 32 | 33 | clean: 34 | rm -f unittest benchmark pngdetail showpng lodepng_unittest.o lodepng_benchmark.o lodepng.o lodepng_util.o pngdetail.o examples/example_sdl.o 35 | -------------------------------------------------------------------------------- /palmod/mui.rcconfig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /palmod/res/PalMod.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Preppy/PalMod/e2b68605c7b4c1eef62311be176d2ddda8c58402/palmod/res/PalMod.ico -------------------------------------------------------------------------------- /palmod/res/PalMod.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // PalMod.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /palmod/res/palmod.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | PALette MODification for fighting games 10 | 11 | 12 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /palmod/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // PalMod.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | -------------------------------------------------------------------------------- /palmod/targetver.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | // The following macros define the minimum required platform. The minimum required platform 5 | // is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run 6 | // your application. The macros work by enabling all features available on platform versions up to and 7 | // including the version specified. 8 | 9 | // Modify the following defines if you have to target a platform prior to the ones specified below. 10 | // Refer to MSDN for the latest info on corresponding values for different platforms. 11 | #ifndef WINVER // Specifies that the minimum required platform is Windows Vista. 12 | #define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. 13 | #endif 14 | 15 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. 16 | #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. 17 | #endif 18 | 19 | #ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. 20 | #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. 21 | #endif 22 | 23 | #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. 24 | #define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. 25 | #endif 26 | 27 | --------------------------------------------------------------------------------