From e99b9ac133e11add67610d26a5fc10e5e514804b Mon Sep 17 00:00:00 2001 From: QbeRoot Date: Fri, 13 Aug 2021 18:08:21 +0200 Subject: [PATCH] remove stage randomizer and remove save boxes --- Codes.xml | 48 ++- changelog.md | 6 + utils/Sunshine.CT | 924 +++++++++++++++++++++++----------------------- 3 files changed, 496 insertions(+), 482 deletions(-) diff --git a/Codes.xml b/Codes.xml index 86d4d09..824ceda 100644 --- a/Codes.xml +++ b/Codes.xml @@ -503,7 +503,7 @@ 04016A90 FC210828 - + Unlock Yoshi Yoshi Freischalten @@ -1209,7 +1209,7 @@ Allows warping to other levels when starting a file or when exiting a level by holding the combination until the screen turns black. ::: warning - This code is not compatible with the Fast Any%, Stage Loader or Stage Randomizer code. + This code is not compatible with the Fast Any% or Stage Loader code. ::: Codes: @@ -1221,7 +1221,7 @@ Die Tastenkombination muss gedrückt gehalten werden bis der Bildschirm schwarz wird. ::: warning WARNUNG - Dieser Code ist nicht Kompatibel mit dem Fast Any%, Stage Loader oder Stage Randomizer code. + Dieser Code ist nicht Kompatibel mit dem Fast Any% oder Stage Loader code. ::: Tastenkombinationen: @@ -1232,7 +1232,7 @@ Permet de charger d'autres niveaux en démarrant un fichier ou en quittant un niveau en maintenant la combinaison appropriée jusqu'à ce que l'écran devienne noir. ::: warning Attention - Ce code n'est pas compatible avec Fast Any%, Chargeur de liste ou Randomiseur de niveaux. + Ce code n'est pas compatible avec Fast Any% ni Chargeur de liste. ::: Combinaisons : @@ -1243,7 +1243,7 @@ 「ファイル開始時」もしくは「ステージ退場時(画面が黒くなるまで)に組合せ入力する」と、他のステージにワープできます。 ::: warning 注意 - このコードは「Fast Any%」「ステージローダー」「ステージランダマイザーモード」とは互換性がありません。 + このコードは「Fast Any%」「ステージローダー」とは互換性がありません。 ::: コード: @@ -1774,28 +1774,28 @@ Loads stages in any% order, skips all save boxes, replaces all dialog with "!!!" (except for the Pianta 5 secret) and makes all FMVs skippable (except for the Pinna 1 cutscenes). ::: warning - This code is not compatible with the Level Select, Stage Loader or Stage Randomizer code. + This code is not compatible with the Level Select or Stage Loader code. ::: Ladet die Level in derselben Reihenfolge wie Any%, überpring alle Speicherschaltflächen, ersetzt alle Dialoge mit "!!!" (Abgesehen von Pianta 5) und ermöglicht das Überspringen aller FMVs (ausser in Pinna 1). ::: warning WARNUNG - Dieser Code ist nicht kompatibel mit dem Level Select, Stage Loader oder Stage Randomizer Code. + Dieser Code ist nicht kompatibel mit dem Level Select oder Stage Loader Code. ::: Charge les niveaux dans l'ordre any%, retire toutes les boîtes de sauvegarde, remplace tous les dialogues par « !!! » (sauf dans Pianta 5) et rend toutes les FMV passables (sauf celles de Pinna 1). ::: warning Attention - Ce code n'est pas compatible avec le Sélecteur de niveau, le Chargeur de liste ou le Randomiseur de niveaux. + Ce code n'est pas compatible avec le Sélecteur de niveau ni le Chargeur de liste. ::: 次の4つの機能を実現します: 「Any%順でステージを読み込む」「全てのセーブ画面をスキップ」「全ての会話を「!!!」に置き換え(モンテ5のシークレットを除く)」「全てのFMVをスキップ可能にする(ピンナ1のFMVを除く)」 ::: warning 注意 - このコードは「Fast Any%」「ステージローダー」「ステージランダマイザーモード」とは互換性がありません。 + このコードは「Fast Any%」「ステージローダー」とは互換性がありません。 ::: Feb 16, 2018 @@ -2360,7 +2360,7 @@ 0426659C 60000000 - + Replace Episode names with their ID Ersetze Episodennamen mit ihrer ID @@ -2444,19 +2444,19 @@ 1.1 Replaces the Episode names with the episode number in the demo screen. - (Useful for the stage randomizer and the stage loader.) + (Useful for the stage loader.) Ersetzt alle Episodennamen mit ihrer Nummer (in der Vorschauszene). - Praktisch für den Stage Randomizer oder Stage Loader. + Praktisch für den Stage Loader. Remplace les noms des épisodes par leurs numéros dans la séquence de démo. - (Utile pour le Randomiseur de niveaux et le Chargeur de liste.) + (Utile pour le Chargeur de liste.) デモ画面でストーリー名をストーリー番号に置き換えます。 - (「ステージランダマイザー」と「ステージローダー」に役立ちます。) + (「ステージローダー」に役立ちます。) Feb 13, 2018 @@ -2802,16 +2802,24 @@ 1.0 Jun 19, 2019 - Removes the logos and cutscene that normally play before the title screen when loading or resetting the game. + Removes the logos and cutscene that normally play before the title screen when loading or resetting the game. + + ::: warning + This makes it impossible to toggle progressive or 60Hz mode, make sure to set these the way you want without the code. + ::: - Entfernt die Logos und Cutscenes welche beim Laden oder Zurücksetzen des Spiels abgespielt werden. + Entfernt die Logos und Cutscenes welche beim Laden oder Zurücksetzen des Spiels abgespielt werden. - Supprime les logos et la cutscene qui apparaissent normalement avant l'écran titre lors du démarrage ou redémarrage du jeu. + Supprime les logos et la cutscene qui apparaissent normalement avant l'écran titre lors du démarrage ou redémarrage du jeu. + + ::: warning Attention + Ce code ne permet pas d'activer ni de désactiver le mode progressif ou 60 Hz, vous devez démarrer le jeu sans ce code pour accéder à cette option. + ::: - (ゲームをロードした時・またはリセット時)タイトル画面の前に再生されるロゴとアニメーションを削除します。 + (ゲームをロードした時・またはリセット時)タイトル画面の前に再生されるロゴとアニメーションを削除します。 042956AC 480002C4 diff --git a/changelog.md b/changelog.md index 7a98038..1bbf436 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## Aug 13, 2021 + +### Removed 'Stage Randomizer' and 'Remove Save Boxes' + +The stage randomizer was outdated by the more powerful stage loader. Removing save boxes has little use for practice and is banned for individual level runs, though it is still possible using 'Fast Any%' or the stage loader. + ## Jul 24, 2021 ### Added 'Coin Count Savestate' diff --git a/utils/Sunshine.CT b/utils/Sunshine.CT index 8507cf0..510d861 100644 --- a/utils/Sunshine.CT +++ b/utils/Sunshine.CT @@ -1,462 +1,462 @@ - - - - - 24 - "Base Address Lookup" - - - Auto Assembler Script - // Uncomment the version you're targeting - -// GMSE01 (NTSC-U) -// define(INPUT_OFFSET,404454) -// define(COIN_COUNT_OFFSET,578A60) -// define(LIFE_COUNT_OFFSET,578A04) -// define(POS_PTR_OFFSET, 40E10C) - - -// GMSJ01 (NTSC-J 1.0) -// define(INPUT_OFFSET, 400D50) -// define(LIFE_COUNT_OFFSET, 575224) -// define(COIN_COUNT_OFFSET, 575280) -// define(POS_PTR_OFFSET, 40A39C) - -// GMSJ01 (NTSC-J 1.1) -// define(INPUT_OFFSET, 3F5428) -// define(LIFE_COUNT_OFFSET, 569724) -// define(COIN_COUNT_OFFSET, 569780) -// define(POS_PTR_OFFSET, 3FEFAC) - -// GMSP01 (PAL) -define(INPUT_OFFSET, 3FBBF4) -define(LIFE_COUNT_OFFSET, 570964) -define(COIN_COUNT_OFFSET, 5709C0) -define(POS_PTR_OFFSET, 4057D4) - -registerSymbol(INPUT_OFFSET) -registerSymbol(COIN_COUNT_OFFSET) -registerSymbol(LIFE_COUNT_OFFSET) -registerSymbol(POS_PTR_OFFSET) - - -[ENABLE] -define(PRACTICE_CODE_MEMORY_OFFSET, 17F0000) -registerSymbol(PRACTICE_CODE_MEMORY_OFFSET) - -label(BASE_ADDRESS) -registerSymbol(BASE_ADDRESS) - -aobScan(aob1,47 4D 53 ?? 30 31 00 ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C2 33 9F 3D) -aob1: -BASE_ADDRESS: - -[DISABLE] -unregisterSymbol(BASE_ADDRESS) -unregisterSymbol(PRACTICE_CODE_MEMORY_OFFSET) -unregisterSymbol(POS_PTR_OFFSET) -unregisterSymbol(LIFE_COUNT_OFFSET) -unregisterSymbol(COIN_COUNT_OFFSET) -unregisterSymbol(INPUT_OFFSET) - - - - - Toggle Activation - - 97 - - 0 - - - - - 50 - "Practice Code Values (Start at PRACTICE_CODE_MEMORY_OFFSET / 0x817F0000)" - - - FF0000 - 1 - - - 57 - "0x000 Level Select Stage Data" - - 1 - Array of byte - 8 -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET
-
- - 53 - "0x008 Stored Position (Mario)" - - 1 - Array of byte - 12 -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+8
-
- - 54 - "0x014 Stored Angle (Mario)" - - 1 - Array of byte - 2 -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+14
-
- - 56 - "0x016 Stored Position (Camera)" - - 1 - Array of byte - 6 -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+16
-
- - 63 - "0x020 Stored Coins" - - 1 - Custom - 4 Byte Big Endian -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+20
-
- - 58 - "0x100 Reset Stopwatch In Demo Screen Flag" - - 1 - Byte -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+100
-
- - 59 - "0x101 Disable Custom IG Timer Flag" - - 1 - Byte -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+101
-
- - 62 - "0x102 Stopwatch Save State" - - 1 - Array of byte - 8 -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+102
-
- - 60 - "0x10C Stop Timer Flag" - - 1 - Byte -
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+10C
-
-
-
- - 0 - "Current Base Address" - - 1 - C0C0C0 - 4 Bytes -
BASE_ADDRESS
-
- - 27 - "Coin Count" - - 008000 - Custom - 4 Byte Big Endian -
BASE_ADDRESS+COIN_COUNT_OFFSET
-
- - 25 - "Life Count" - - 008000 - Custom - 4 Byte Big Endian -
BASE_ADDRESS+LIFE_COUNT_OFFSET
-
- - 29 - "Mario's Position" - - - C08000 - Auto Assembler Script - // Get marios position -[ENABLE] - -// Allocate 4 bytes for the position -registerSymbol(INT_POS_ADDRESS) -alloc(INT_POS_ADDRESS, 4) - -// Read the address of the controller input -// into INT_CONTROLLER_INPUT_ADDRESS -// Since GC uses big endian we have to reverse -// the 4 bytes of the pointer -INT_POS_ADDRESS: -readMem(BASE_ADDRESS + POS_PTR_OFFSET + 3, 1) -readMem(BASE_ADDRESS + POS_PTR_OFFSET + 2, 1) -readMem(BASE_ADDRESS + POS_PTR_OFFSET + 1, 1) -readMem(BASE_ADDRESS + POS_PTR_OFFSET, 1) - -// Calculate the final address for use with Dolphin -define(POS_ADDRESS, BASE_ADDRESS + [INT_POS_ADDRESS] - 80000000) -registerSymbol(POS_ADDRESS) - -[DISABLE] -dealloc(INT_POS_ADDRESS) -unregisterSymbol(INT_POS_ADDRESS) -unregisterSymbol(POS_ADDRESS) - - - - Toggle Activation - - 97 - - 0 - - - - - 30 - "Marios Position" - - 1 - Array of byte - 12 -
POS_ADDRESS
-
-
-
- - 34 - "Controller Inputs" - - - C08000 - 1 - - - 40 - "A" - 0:- -1:Pressed - - - Binary - 0 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET
-
- - 41 - "B" - 0:- -1:Pressed - - - Binary - 1 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET
-
- - 38 - "X" - 0:- -1:Pressed - - - Binary - 2 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET
-
- - 39 - "Y" - 0:- -1:Pressed - - - Binary - 3 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET
-
- - 49 - "Start" - 0:- -1:Pressed - - - Binary - 4 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET
-
- - 48 - "Z" - 0:- -1:Pressed - - - Binary - 4 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET+1
-
- - 32 - "DPAD UP" - 0:- -1:Pressed - - - 1 - Binary - 3 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET + 1
-
- - 35 - "DPAD DOWN" - 0:- -1:Pressed - - - Binary - 2 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET + 1
-
- - 36 - "DPAD LEFT" - 0:- -1:Pressed - - - Binary - 0 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET + 1
-
- - 37 - "DPAD RIGHT" - 0:- -1:Pressed - - - Binary - 1 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET + 1
-
- - 42 - "L" - 0:- -1:Pressed - - - Binary - 6 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET + 1
-
- - 44 - "L (Analog)" - - Byte -
BASE_ADDRESS+INPUT_OFFSET + 6
-
- - 43 - "R" - 0:- -1:Pressed - - - Binary - 5 - 1 - 0 -
BASE_ADDRESS+INPUT_OFFSET + 1
-
- - 45 - "R (Analog)" - - Byte -
BASE_ADDRESS+INPUT_OFFSET + 7
-
- - 46 - "L Stick" - - Custom - 2 Byte Big Endian -
BASE_ADDRESS+INPUT_OFFSET + 2
-
- - 47 - "R-Stick" - - Custom - 2 Byte Big Endian -
BASE_ADDRESS+INPUT_OFFSET+4
-
-
-
-
-
-
- - - Group 0 - - - - - label5 -
004E3739
-
- - label1 -
01733513
-
- - xlivekiller -
59151605
-
-
- Grey -> Informational -
+ + + + + 24 + "Base Address Lookup" + + + Auto Assembler Script + // Uncomment the version you're targeting + +// GMSE01 (NTSC-U) +// define(INPUT_OFFSET,404454) +// define(COIN_COUNT_OFFSET,578A60) +// define(LIFE_COUNT_OFFSET,578A04) +// define(POS_PTR_OFFSET, 40E10C) + + +// GMSJ01 (NTSC-J 1.0) +// define(INPUT_OFFSET, 400D50) +// define(LIFE_COUNT_OFFSET, 575224) +// define(COIN_COUNT_OFFSET, 575280) +// define(POS_PTR_OFFSET, 40A39C) + +// GMSJ01 (NTSC-J 1.1) +// define(INPUT_OFFSET, 3F5428) +// define(LIFE_COUNT_OFFSET, 569724) +// define(COIN_COUNT_OFFSET, 569780) +// define(POS_PTR_OFFSET, 3FEFAC) + +// GMSP01 (PAL) +define(INPUT_OFFSET, 3FBBF4) +define(LIFE_COUNT_OFFSET, 570964) +define(COIN_COUNT_OFFSET, 5709C0) +define(POS_PTR_OFFSET, 4057D4) + +registerSymbol(INPUT_OFFSET) +registerSymbol(COIN_COUNT_OFFSET) +registerSymbol(LIFE_COUNT_OFFSET) +registerSymbol(POS_PTR_OFFSET) + + +[ENABLE] +define(PRACTICE_CODE_MEMORY_OFFSET, 17F0000) +registerSymbol(PRACTICE_CODE_MEMORY_OFFSET) + +label(BASE_ADDRESS) +registerSymbol(BASE_ADDRESS) + +aobScan(aob1,47 4D 53 ?? 30 31 00 ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C2 33 9F 3D) +aob1: +BASE_ADDRESS: + +[DISABLE] +unregisterSymbol(BASE_ADDRESS) +unregisterSymbol(PRACTICE_CODE_MEMORY_OFFSET) +unregisterSymbol(POS_PTR_OFFSET) +unregisterSymbol(LIFE_COUNT_OFFSET) +unregisterSymbol(COIN_COUNT_OFFSET) +unregisterSymbol(INPUT_OFFSET) + + + + + Toggle Activation + + 97 + + 0 + + + + + 50 + "Practice Code Values (Start at PRACTICE_CODE_MEMORY_OFFSET / 0x817F0000)" + + + FF0000 + 1 + + + 57 + "0x000 Level Select Stage Data" + + 1 + Array of byte + 8 +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET
+
+ + 53 + "0x008 Stored Position (Mario)" + + 1 + Array of byte + 12 +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+8
+
+ + 54 + "0x014 Stored Angle (Mario)" + + 1 + Array of byte + 2 +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+14
+
+ + 56 + "0x016 Stored Position (Camera)" + + 1 + Array of byte + 6 +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+16
+
+ + 63 + "0x020 Stored Coins" + + 1 + Custom + 4 Byte Big Endian +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+20
+
+ + 58 + "0x100 Reset Stopwatch In Demo Screen Flag" + + 1 + Byte +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+100
+
+ + 59 + "0x101 Disable Custom IG Timer Flag" + + 1 + Byte +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+101
+
+ + 62 + "0x102 Stopwatch Save State" + + 1 + Array of byte + 8 +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+102
+
+ + 60 + "0x10C Stop Timer Flag" + + 1 + Byte +
BASE_ADDRESS+PRACTICE_CODE_MEMORY_OFFSET+10C
+
+
+
+ + 0 + "Current Base Address" + + 1 + C0C0C0 + 4 Bytes +
BASE_ADDRESS
+
+ + 27 + "Coin Count" + + 008000 + Custom + 4 Byte Big Endian +
BASE_ADDRESS+COIN_COUNT_OFFSET
+
+ + 25 + "Life Count" + + 008000 + Custom + 4 Byte Big Endian +
BASE_ADDRESS+LIFE_COUNT_OFFSET
+
+ + 29 + "Mario's Position" + + + C08000 + Auto Assembler Script + // Get marios position +[ENABLE] + +// Allocate 4 bytes for the position +registerSymbol(INT_POS_ADDRESS) +alloc(INT_POS_ADDRESS, 4) + +// Read the address of the controller input +// into INT_CONTROLLER_INPUT_ADDRESS +// Since GC uses big endian we have to reverse +// the 4 bytes of the pointer +INT_POS_ADDRESS: +readMem(BASE_ADDRESS + POS_PTR_OFFSET + 3, 1) +readMem(BASE_ADDRESS + POS_PTR_OFFSET + 2, 1) +readMem(BASE_ADDRESS + POS_PTR_OFFSET + 1, 1) +readMem(BASE_ADDRESS + POS_PTR_OFFSET, 1) + +// Calculate the final address for use with Dolphin +define(POS_ADDRESS, BASE_ADDRESS + [INT_POS_ADDRESS] - 80000000) +registerSymbol(POS_ADDRESS) + +[DISABLE] +dealloc(INT_POS_ADDRESS) +unregisterSymbol(INT_POS_ADDRESS) +unregisterSymbol(POS_ADDRESS) + + + + Toggle Activation + + 97 + + 0 + + + + + 30 + "Marios Position" + + 1 + Array of byte + 12 +
POS_ADDRESS
+
+
+
+ + 34 + "Controller Inputs" + + + C08000 + 1 + + + 40 + "A" + 0:- +1:Pressed + + + Binary + 0 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET
+
+ + 41 + "B" + 0:- +1:Pressed + + + Binary + 1 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET
+
+ + 38 + "X" + 0:- +1:Pressed + + + Binary + 2 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET
+
+ + 39 + "Y" + 0:- +1:Pressed + + + Binary + 3 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET
+
+ + 49 + "Start" + 0:- +1:Pressed + + + Binary + 4 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET
+
+ + 48 + "Z" + 0:- +1:Pressed + + + Binary + 4 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET+1
+
+ + 32 + "DPAD UP" + 0:- +1:Pressed + + + 1 + Binary + 3 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET + 1
+
+ + 35 + "DPAD DOWN" + 0:- +1:Pressed + + + Binary + 2 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET + 1
+
+ + 36 + "DPAD LEFT" + 0:- +1:Pressed + + + Binary + 0 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET + 1
+
+ + 37 + "DPAD RIGHT" + 0:- +1:Pressed + + + Binary + 1 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET + 1
+
+ + 42 + "L" + 0:- +1:Pressed + + + Binary + 6 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET + 1
+
+ + 44 + "L (Analog)" + + Byte +
BASE_ADDRESS+INPUT_OFFSET + 6
+
+ + 43 + "R" + 0:- +1:Pressed + + + Binary + 5 + 1 + 0 +
BASE_ADDRESS+INPUT_OFFSET + 1
+
+ + 45 + "R (Analog)" + + Byte +
BASE_ADDRESS+INPUT_OFFSET + 7
+
+ + 46 + "L Stick" + + Custom + 2 Byte Big Endian +
BASE_ADDRESS+INPUT_OFFSET + 2
+
+ + 47 + "R-Stick" + + Custom + 2 Byte Big Endian +
BASE_ADDRESS+INPUT_OFFSET+4
+
+
+
+
+
+
+ + + Group 0 + + + + + label5 +
004E3739
+
+ + label1 +
01733513
+
+ + xlivekiller +
59151605
+
+
+ Grey -> Informational +