Skip to content

Commit b792e97

Browse files
authored
Merge pull request FortuneStreetModding#290 from mask1n/master
Add Itadaki Street Wii to Address Calculator
2 parents d58632d + 55d7f72 commit b792e97

File tree

2 files changed

+83
-6
lines changed

2 files changed

+83
-6
lines changed

src/lib/addressconverter.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,28 @@ export const bsvirt_to_fsvirt = new AddressSectionMapper([
7373
{ off_beg: 0x8044ec00, off_end: 0x804ac804, delta: 0x1a0 },
7474
{ off_beg: 0x804ac880, off_end: 0x8081f013, delta: 0x200 },
7575
]);
76+
77+
// Boom Street Virtual to Itadaki Street Wii Virtual
78+
export const bsvirt_to_isvirt = new AddressSectionMapper([
79+
{ off_beg: 0x80000100, off_end: 0x8007a283, delta: 0x0 },
80+
{ off_beg: 0x8007a2f4, off_end: 0x80268717, delta: 0x94 },
81+
{ off_beg: 0x8026871f, off_end: 0x8040d97b, delta: 0x90 },
82+
{ off_beg: 0x8040d97f, off_end: 0x80410278, delta: 0x80 },
83+
{ off_beg: 0x80410578, off_end: 0x8044ebe3, delta: 0x2a8 },
84+
{ off_beg: 0x8044ebff, off_end: 0x804ac804, delta: 0x2c0 },
85+
{ off_beg: 0x804ac880, off_end: 0x8081f013, delta: 0x300 },
86+
]);
87+
88+
// Itadaki Street Wii Virtual to Itadaki Street Wii File
89+
export const isvirt_to_isfile = new AddressSectionMapper([
90+
{ off_beg: 0x80004000, off_end: 0x80006720, delta: 0x80003f00 },
91+
{ off_beg: 0x80006720, off_end: 0x80006c80, delta: 0x7fbfda80 },
92+
{ off_beg: 0x80006c80, off_end: 0x80007480, delta: 0x7fbfda80 },
93+
{ off_beg: 0x80007480, off_end: 0x8040d900, delta: 0x80004c60 },
94+
{ off_beg: 0x8040d900, off_end: 0x8040de40, delta: 0x80003f00 },
95+
{ off_beg: 0x8040de40, off_end: 0x8040de60, delta: 0x80003f00 },
96+
{ off_beg: 0x8040de80, off_end: 0x8044e940, delta: 0x80003f20 },
97+
{ off_beg: 0x8044e940, off_end: 0x804ac560, delta: 0x80003f20 },
98+
{ off_beg: 0x80814980, off_end: 0x808170c0, delta: 0x8036c340 },
99+
{ off_beg: 0x80818ca0, off_end: 0x8081ece0, delta: 0x8036df20 },
100+
]);

src/pages/calculator.astro

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
import Layout from '~/layouts/layout.astro';
33
---
44
<script>
5-
import { bsvirt_to_bsfile, bsvirt_to_fsvirt, fsvirt_to_fsfile } from '~/lib/addressconverter';
5+
import { bsvirt_to_bsfile, bsvirt_to_fsvirt, bsvirt_to_isvirt, fsvirt_to_fsfile, isvirt_to_isfile } from '~/lib/addressconverter';
66

77
let fsvirt: number | null;
88
let bsvirt: number | null;
9+
let isvirt: number | null;
910
let fsfile: number | null;
1011
let bsfile: number | null;
12+
let isfile: number | null;
1113

1214
const setAddress = (input: HTMLInputElement, address: number | null): number | null => {
1315
if (address !== null) {
@@ -18,48 +20,71 @@ import Layout from '~/layouts/layout.astro';
1820

1921
const fsvirt_input = document.getElementById('fsvirt_input') as HTMLInputElement;
2022
const bsvirt_input = document.getElementById('bsvirt_input') as HTMLInputElement;
23+
const isvirt_input = document.getElementById('isvirt_input') as HTMLInputElement;
2124
const fsfile_input = document.getElementById('fsfile_input') as HTMLInputElement;
2225
const bsfile_input = document.getElementById('bsfile_input') as HTMLInputElement;
26+
const isfile_input = document.getElementById('isfile_input') as HTMLInputElement;
2327

2428
const inputHandler = (e: Event) => {
2529
const target = e.target as HTMLInputElement;
2630
fsvirt_input.classList.remove('is-valid', 'is-invalid');
2731
bsvirt_input.classList.remove('is-valid', 'is-invalid');
32+
isvirt_input.classList.remove('is-valid', 'is-invalid');
2833
fsfile_input.classList.remove('is-valid', 'is-invalid');
2934
bsfile_input.classList.remove('is-valid', 'is-invalid');
35+
isfile_input.classList.remove('is-valid', 'is-invalid');
3036
let address = parseInt(target.value, 16);
3137

3238
switch (target) {
3339
case fsvirt_input:
3440
fsvirt = address;
3541
bsvirt = setAddress(bsvirt_input, bsvirt_to_fsvirt.inverseMap(fsvirt));
36-
if (bsvirt !== null) {
42+
isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt));
43+
if (bsvirt !== null || isvirt !== null) {
3744
target.classList.add('is-valid');
3845
setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
3946
setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
47+
setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
4048
} else {
4149
target.classList.add('is-invalid');
4250
}
4351
break;
4452
case bsvirt_input:
4553
bsvirt = address;
4654
fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
47-
if (fsvirt !== null) {
55+
isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt));
56+
if (fsvirt !== null || isvirt !== null) {
4857
target.classList.add('is-valid');
4958
setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
5059
setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
60+
setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
5161
} else {
5262
target.classList.add('is-invalid');
5363
}
5464
break;
65+
case isvirt_input:
66+
isvirt = address;
67+
bsvirt = setAddress(bsvirt_input, bsvirt_to_isvirt.inverseMap(isvirt));
68+
fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
69+
if (bsvirt !== null || fsvirt !== null) {
70+
target.classList.add('is-valid');
71+
setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
72+
setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
73+
setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
74+
} else {
75+
target.classList.add('is-invalid');
76+
}
77+
break;
5578
case fsfile_input:
5679
fsfile = address;
5780
fsvirt = setAddress(fsvirt_input, fsvirt_to_fsfile.inverseMap(fsfile));
5881
if (fsvirt !== null) {
5982
target.classList.add('is-valid');
6083
bsvirt = setAddress(bsvirt_input, bsvirt_to_fsvirt.inverseMap(fsvirt));
61-
if (bsvirt !== null) {
84+
isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt))
85+
if (bsvirt !== null || isvirt !== null) {
6286
setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
87+
setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
6388
}
6489
} else {
6590
target.classList.add('is-invalid');
@@ -71,7 +96,24 @@ import Layout from '~/layouts/layout.astro';
7196
if (bsvirt !== null) {
7297
target.classList.add('is-valid');
7398
fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
74-
if (fsvirt !== null) {
99+
isvirt = setAddress(isvirt_input, bsvirt_to_isvirt.map(bsvirt));
100+
if (fsvirt !== null || isvirt !== null) {
101+
setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
102+
setAddress(isfile_input, isvirt_to_isfile.map(isvirt));
103+
}
104+
} else {
105+
target.classList.add('is-invalid');
106+
}
107+
break;
108+
case isfile_input:
109+
isfile = address;
110+
isvirt = setAddress(isvirt_input, isvirt_to_isfile.inverseMap(isfile));
111+
if (isvirt !== null) {
112+
target.classList.add('is-valid');
113+
bsvirt = setAddress(bsvirt_input, bsvirt_to_isvirt.inverseMap(isvirt));
114+
fsvirt = setAddress(fsvirt_input, bsvirt_to_fsvirt.map(bsvirt));
115+
if (bsvirt !== null || fsvirt !== null) {
116+
setAddress(bsfile_input, bsvirt_to_bsfile.map(bsvirt));
75117
setAddress(fsfile_input, fsvirt_to_fsfile.map(fsvirt));
76118
}
77119
} else {
@@ -84,15 +126,17 @@ import Layout from '~/layouts/layout.astro';
84126
// Add event listeners to input elements
85127
fsvirt_input.addEventListener('input', inputHandler);
86128
bsvirt_input.addEventListener('input', inputHandler);
129+
isvirt_input.addEventListener("input", inputHandler);
87130
fsfile_input.addEventListener('input', inputHandler);
88131
bsfile_input.addEventListener('input', inputHandler);
132+
isfile_input.addEventListener('input', inputHandler);
89133
</script>
90134
<Layout title="Address Calculator">
91135
<section class="jumbotron text-center">
92136
<div class="w3-card-4 w3-center w3-display-topmiddle w3-margin-bottom-16">
93137
<h1 class="w3-container w3-blue w3-padding-16">Fortune Street Address Calculator</h1>
94138
<div class="container text-center">
95-
<div class="row row-cols-2 g-3">
139+
<div class="row row-cols-3 g-3">
96140
<div class="col">
97141
<label class="form-label">Fortune Street Virtual</label>
98142
<input type="text" id="fsvirt_input" placeholder="80004000" class="form-control" />
@@ -101,6 +145,10 @@ import Layout from '~/layouts/layout.astro';
101145
<label class="form-label">Boom Street Virtual</label>
102146
<input type="text" id="bsvirt_input" placeholder="80004000" class="form-control" />
103147
</div>
148+
<div class="col">
149+
<label class="form-label">Itadaki Street Wii Virtual</label>
150+
<input type="text" id="isvirt_input" placeholder="80004000" class="form-control" />
151+
</div>
104152
<div class="col">
105153
<label class="form-label">Fortune Street File</label>
106154
<input type="text" id="fsfile_input" placeholder="100" class="form-control" />
@@ -109,6 +157,10 @@ import Layout from '~/layouts/layout.astro';
109157
<label class="form-label">Boom Street File</label>
110158
<input type="text" id="bsfile_input" placeholder="100" class="form-control" />
111159
</div>
160+
<div class="col">
161+
<label class="form-label">Itadaki Street Wii File</label>
162+
<input type="text" id="isfile_input" placeholder="100" class="form-control" />
163+
</div>
112164
</div>
113165
</div>
114166
</div>

0 commit comments

Comments
 (0)