#include #include "game/chr/chraicommands.h" #include "game/game_0f09f0.h" #include "game/game_102240.h" #include "game/cheats.h" #include "game/game_107fb0.h" #include "game/game_10ccd0.h" #include "game/game_176d70.h" #include "game/game_1a3340.h" #include "gvars/gvars.h" #include "game/data/cheats.h" #include "stagesetup.h" #include "types.h" struct cheat g_Cheats[NUM_CHEATS] = { // name, time, stage index, difficulty, flags { 0x544b, 123, 2, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Hurricane Fists { 0x544c, 100, 5, DIFF_A, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // Cloaking Device { 0x544d, 230, 8, DIFF_A, CHEATFLAG_TIMED }, // Invincible { 0x544e, 331, 16, DIFF_PA, CHEATFLAG_TIMED | CHEATFLAG_TRANSFERPAK }, // All Guns in Solo { 0x544f, 427, 12, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo { 0x5450, 191, 9, DIFF_SA, CHEATFLAG_TIMED }, // Unlimited Ammo, No Reloads { 0x5451, 0, 1, DIFF_A, CHEATFLAG_COMPLETION }, // Slo-mo Single Player { 0x5452, 0, 4, DIFF_A, CHEATFLAG_COMPLETION }, // DK Mode { 0x5453, 170, 11, DIFF_A, CHEATFLAG_TIMED }, // Trent's Magnum { 0x5454, 447, 13, DIFF_PA, CHEATFLAG_TIMED }, // FarSight { 0x5455, 0, 5, DIFF_A, CHEATFLAG_COMPLETION }, // Small Jo { 0x5456, 0, 6, DIFF_A, CHEATFLAG_COMPLETION }, // Small Characters { 0x5457, 0, 14, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Shields { 0x5458, 0, 13, DIFF_A, CHEATFLAG_COMPLETION }, // Jo Shield { 0x5459, 105, 14, DIFF_A, CHEATFLAG_TIMED }, // Super Shield { 0x545a, 0, 0, DIFF_A, CHEATFLAG_COMPLETION }, // Classic Sight { 0x545b, 0, 9, DIFF_A, CHEATFLAG_COMPLETION }, // Team Heads Only { 0x545c, 479, 7, DIFF_PA, CHEATFLAG_TIMED }, // Play as Elvis { 0x545d, 0, 12, DIFF_A, CHEATFLAG_COMPLETION }, // Enemy Rockets { 0x545e, 235, 10, DIFF_PA, CHEATFLAG_TIMED }, // Unlimited Ammo - Laptop Sentry Gun { 0x545f, 90, 0, DIFF_SA, CHEATFLAG_TIMED }, // Marquis of Queensbury Rules { 0x5460, 0, 11, DIFF_A, CHEATFLAG_COMPLETION }, // Perfect Darkness { 0x5461, 390, 1, DIFF_PA, CHEATFLAG_TIMED }, // Pugilist { 0x5462, 300, 6, DIFF_SA, CHEATFLAG_TIMED }, // Hotshot { 0x5463, 150, 3, DIFF_SA, CHEATFLAG_TIMED }, // Hit and Run { 0x5464, 317, 15, DIFF_SA, CHEATFLAG_TIMED }, // Alien { 0x5465, 0, 16, DIFF_A, CHEATFLAG_COMPLETION | CHEATFLAG_TRANSFERPAK }, // R-Tracker/Weapon Cache Locations { 0x5466, 0, 2, DIFF_A, CHEATFLAG_COMPLETION }, // Rocket Launcher { 0x5467, 0, 3, DIFF_A, CHEATFLAG_COMPLETION }, // Sniper Rifle { 0x5468, 0, 7, DIFF_A, CHEATFLAG_COMPLETION }, // X-Ray Scanner { 0x5469, 0, 8, DIFF_A, CHEATFLAG_COMPLETION }, // SuperDragon { 0x546a, 0, 10, DIFF_A, CHEATFLAG_COMPLETION }, // Laptop Gun { 0x546b, 0, 15, DIFF_A, CHEATFLAG_COMPLETION }, // Phoenix { 0x546c, 120, 4, DIFF_PA, CHEATFLAG_TIMED }, // Psychosis Gun { 0x546d, 36, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // PP9i { 0x546e, 37, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // CC13 { 0x546f, 38, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // KL01313 { 0x5470, 39, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // KF7 Special { 0x5471, 40, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // ZZT (9mm) { 0x5472, 41, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // DMC { 0x5473, 42, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // AR53 { 0x5474, 43, 0, DIFF_A, CHEATFLAG_FIRINGRANGE }, // RC-P45 }; struct menu_item g_CheatWarningMenuItems[] = { { MENUITEMTYPE_LABEL, 0, 0x00000000, 0x000051df, 0x00000000, NULL }, // "If you activate any cheats, then you will be unable to progress further in the game while those cheats are active." { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051e0, 0x00000000, NULL }, // "OK" { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051e1, 0x00000000, NULL }, // "Cancel" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatWarningMenuDialog = { MENUDIALOGTYPE_SUCCESS, 0x51de, // "Warning" g_CheatWarningMenuItems, NULL, 0x00000000, NULL, }; struct menu_item g_CheatsFunMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 7, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 10, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 11, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 16, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 17, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 6, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsFunMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x5476, // "Fun" g_CheatsFunMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, }; struct menu_item g_CheatsGameplayMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 2, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 1, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 20, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 13, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 14, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 12, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 18, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 21, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsGameplayMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x5477, // "Gameplay" g_CheatsGameplayMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, }; struct menu_item g_CheatsSoloWeaponsMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 27, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 28, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 30, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 31, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 32, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 33, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 8, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 9, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsSoloWeaponsMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x547a, // "Weapons for Jo in Solo" g_CheatsSoloWeaponsMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, }; struct menu_item g_CheatsClassicWeaponsMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 34, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 35, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 36, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 37, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 38, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 39, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 40, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 41, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, 0x00005490, 0x00000000, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x000000c8, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsClassicWeaponsMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x547b, // "Classic Weapons for Jo in Solo" g_CheatsClassicWeaponsMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, }; struct menu_item g_CheatsWeaponsMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 15, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 19, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 4, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 5, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 29, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 26, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_CHECKBOX, 3, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleCheatCheckbox }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsWeaponsMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x5478, // "Weapons" g_CheatsWeaponsMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, }; struct menu_item g_CheatsBuddiesMenuItems[] = { { MENUITEMTYPE_CHECKBOX, 0, 0x00000000, 0x00005475, 0x00000000, cheatMenuHandleBuddyCheckbox }, // "Velvet Dark" { MENUITEMTYPE_CHECKBOX, 22, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, { MENUITEMTYPE_CHECKBOX, 23, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, { MENUITEMTYPE_CHECKBOX, 24, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, { MENUITEMTYPE_CHECKBOX, 25, 0x00000000, (u32) &cheatGetNameIfUnlocked, 0x00000000, cheatMenuHandleBuddyCheckbox }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_MARQUEE, 0, 0x00000a00, (u32) &cheatGetMarquee, 0x00000000, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsBuddiesMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x5479, // "Buddies" g_CheatsBuddiesMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, }; struct menu_item g_CheatsMenuItems[] = { { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005476, 0x00000000, &g_CheatsFunMenuDialog }, // "Fun" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005477, 0x00000000, &g_CheatsGameplayMenuDialog }, // "Gameplay" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000547a, 0x00000000, &g_CheatsSoloWeaponsMenuDialog }, // "Weapons for Jo in Solo" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x0000547b, 0x00000000, &g_CheatsClassicWeaponsMenuDialog }, // "Classic Weapons for Jo in Solo" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005478, 0x00000000, &g_CheatsWeaponsMenuDialog }, // "Weapons" { MENUITEMTYPE_SELECTABLE, 0, 0x00000004, 0x00005479, 0x00000000, &g_CheatsBuddiesMenuDialog }, // "Buddies" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000000, 0x000054d9, 0x00000000, cheatMenuHandleTurnOffAllCheats }, // "Turn of all Cheats" { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000096, 0x00000000, NULL }, { MENUITEMTYPE_SELECTABLE, 0, 0x00000028, 0x000051dd, 0x00000000, NULL }, // "Done" { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, }; struct menu_dialog g_CheatsMenuDialog = { MENUDIALOGTYPE_DEFAULT, 0x51dc, // "Cheats" g_CheatsMenuItems, cheatMenuHandleDialog, 0x00000000, NULL, };