summaryrefslogtreecommitdiff
path: root/src/com/sneed/pkrandom/romhandlers
diff options
context:
space:
mode:
authortom-overton <tom.overton@outlook.com>2022-09-22 23:57:01 -0700
committerrafa_99 <raroma09@gmail.com>2022-09-24 01:02:39 +0100
commit4226887959f7e48d2fa1b24943384abe2b16447a (patch)
tree1957d573b565d257afbe82ae1988b32dbd4891ad /src/com/sneed/pkrandom/romhandlers
parent88f5b7bc0fc6ac127cbc662448bdd592827ea02a (diff)
Add support for randomizing starter held items in DPPt
Diffstat (limited to 'src/com/sneed/pkrandom/romhandlers')
-rwxr-xr-xsrc/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java6
-rwxr-xr-xsrc/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java5
-rwxr-xr-xsrc/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java5
-rwxr-xr-xsrc/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java17
-rwxr-xr-xsrc/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java5
-rw-r--r--src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java5
-rw-r--r--src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java5
-rwxr-xr-xsrc/com/sneed/pkrandom/romhandlers/RomHandler.java2
8 files changed, 47 insertions, 3 deletions
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java
index 3ba0183..470d7c7 100755
--- a/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen1RomHandler.java
@@ -991,6 +991,12 @@ public class Gen1RomHandler extends AbstractGBCRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ // No held items in Gen 1
+ return false;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
// do nothing
return new ArrayList<>();
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java
index 388bdbc..ef2c6ac 100755
--- a/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen2RomHandler.java
@@ -835,6 +835,11 @@ public class Gen2RomHandler extends AbstractGBCRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ return true;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
List<Integer> sHeldItems = new ArrayList<>();
int[] shiOffsets = romEntry.arrayEntries.get("StarterHeldItems");
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java
index 14a0987..a9dff29 100755
--- a/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen3RomHandler.java
@@ -1576,6 +1576,11 @@ public class Gen3RomHandler extends AbstractGBRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ return true;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
List<Integer> sHeldItems = new ArrayList<>();
if (romEntry.romType == Gen3Constants.RomType_FRLG) {
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java
index 76e867a..19dcf80 100755
--- a/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen4RomHandler.java
@@ -1567,14 +1567,25 @@ public class Gen4RomHandler extends AbstractDSRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ return romEntry.romType == Gen4Constants.Type_DP || romEntry.romType == Gen4Constants.Type_Plat;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
- // do nothing
- return new ArrayList<>();
+ int starterScriptNumber = romEntry.getInt("StarterPokemonScriptOffset");
+ int starterHeldItemOffset = romEntry.getInt("StarterPokemonHeldItemOffset");
+ byte[] file = scriptNarc.files.get(starterScriptNumber);
+ int item = FileFunctions.read2ByteInt(file, starterHeldItemOffset);
+ return Arrays.asList(item);
}
@Override
public void setStarterHeldItems(List<Integer> items) {
- // do nothing
+ int starterScriptNumber = romEntry.getInt("StarterPokemonScriptOffset");
+ int starterHeldItemOffset = romEntry.getInt("StarterPokemonHeldItemOffset");
+ byte[] file = scriptNarc.files.get(starterScriptNumber);
+ FileFunctions.write2ByteInt(file, starterHeldItemOffset, items.get(0));
}
@Override
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java
index 0243132..538c8da 100755
--- a/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen5RomHandler.java
@@ -1006,6 +1006,11 @@ public class Gen5RomHandler extends AbstractDSRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ return false;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
// do nothing
return new ArrayList<>();
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java
index 03ab7cc..86bfec7 100644
--- a/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen6RomHandler.java
@@ -1160,6 +1160,11 @@ public class Gen6RomHandler extends Abstract3DSRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ return true;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
List<Integer> starterHeldItems = new ArrayList<>();
try {
diff --git a/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java b/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java
index 737eedc..07296f7 100644
--- a/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/Gen7RomHandler.java
@@ -1262,6 +1262,11 @@ public class Gen7RomHandler extends Abstract3DSRomHandler {
}
@Override
+ public boolean supportsStarterHeldItems() {
+ return true;
+ }
+
+ @Override
public List<Integer> getStarterHeldItems() {
List<Integer> starterHeldItems = new ArrayList<>();
try {
diff --git a/src/com/sneed/pkrandom/romhandlers/RomHandler.java b/src/com/sneed/pkrandom/romhandlers/RomHandler.java
index aa067e7..4078ead 100755
--- a/src/com/sneed/pkrandom/romhandlers/RomHandler.java
+++ b/src/com/sneed/pkrandom/romhandlers/RomHandler.java
@@ -128,6 +128,8 @@ public interface RomHandler {
List<Pokemon> getPickedStarters();
+ boolean supportsStarterHeldItems();
+
List<Integer> getStarterHeldItems();
void setStarterHeldItems(List<Integer> items);