diff --git a/Codes.xml b/Codes.xml
index b3afc78..f2d118a 100644
--- a/Codes.xml
+++ b/Codes.xml
@@ -4659,60 +4659,60 @@
- misc
+ lib
+ GCILoader
GCI Loader
sup39(サポミク)
- 0.1
- Nov 11, 2022
+ 0.2
+ Nov 16, 2022
- Execute Gecko code loaded from GCI file.
- ::: warning
- You will need to reset the game if you hotplug your memory card
- :::
+ Execute Gecko code loaded from GCI file.
+ ::: warning
+ You will need to reset the game if you hotplug your memory card
+ :::
diff --git a/changelog.md b/changelog.md
index bbebe17..b9abd0b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,9 @@
# Changelog
+## Nov 16, 2022
+- Add GCI+XXX as download format
+- Add return code for GCI Loader
+- Smaller GCI file (0xE000 bytes to 0x4000 bytes)
+
## Nov 11, 2022
- Add GCI Loader (NTSC-J 1.0 only)
- Support GCI as download format (NTSC-J 1.0 only)
diff --git a/site/.vuepress/components/DownloadButton.vue b/site/.vuepress/components/DownloadButton.vue
index f9629a5..cab0144 100644
--- a/site/.vuepress/components/DownloadButton.vue
+++ b/site/.vuepress/components/DownloadButton.vue
@@ -86,6 +86,18 @@ export default {
this.alertDolphinCodeSize(codeSize);
this.generateCheatManagerTXT(c, fileName);
break;
+ case 'gci+gct':
+ this.generateGCI(c, fileName) &&
+ this.generateGCT(this.getGCILoader(), fileName);
+ break;
+ case 'gci+dolphin':
+ this.generateGCI(c, fileName) &&
+ this.generateDolphinINI(this.getGCILoader(), fileName);
+ break;
+ case 'gci+gcm':
+ this.generateGCI(c, fileName) &&
+ this.generateCheatManagerTXT(this.getGCILoader(), fileName);
+ break;
case 'gci':
this.generateGCI(c, fileName);
break;
@@ -102,6 +114,11 @@ export default {
alert(translate('generatorconfig.alert.dolphin', this.$lang).replaceAll('{size}', size-16));
}
},
+ getGCILoader() {
+ const {codes} = gameVersions.find((v) => v.identifier === this.versionIdentifier);
+ const code = codes.find(code => code.id === 'GCILoader');
+ return [code];
+ },
generateGCT(codes, version) {
let code = '00D0C0DE00D0C0DE';
codes.forEach((c) => (code += c.source));
@@ -150,15 +167,15 @@ export default {
generateGCI(codes, version) {
if (!['GMSJ01'].includes(version)) {
alert('GCI format is not yet supported for versions other than GMSJ01');
- return;
+ return false; // error
}
let code = '00D0C0DE00D0C0DE';
codes.forEach((c) => (code += c.source));
- code += 'F000000000000000';
+ code += 'C0000000000000023C60818081E3A7FC7DE478504E800020'; // return
- const blockCount = 7; // TODO
+ const blockCount = 2; // TODO
const gciSize = 0x40+0x2000*blockCount;
- const padSize = 0xB040; // TODO
+ const padSize = 0x40; // TODO
let rawData = new Uint8Array(gciSize);
for (let iD=padSize, iC=0; iD