Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function swapExits(stage, rom)
- {
- if (stage.exits !== 2) return;
- console.log('swapping exits @ ' + stage.name);
- // secret exit triggers event+1
- var ndxa = rom[0x2D608 + stage.translevel];
- var ndxb = ndxa + 1, ndxc = ndxa + 2;
- // get offsets into the event data table
- var offseta = rom[0x26359 + ndxa * 2] | (rom[0x26359 + ndxa * 2 + 1] << 8);
- var offsetb = rom[0x26359 + ndxb * 2] | (rom[0x26359 + ndxb * 2 + 1] << 8);
- var offsetc = rom[0x26359 + ndxc * 2] | (rom[0x26359 + ndxc * 2 + 1] << 8);
- // get the size of each event
- var asz = offsetb - offseta;
- var bsz = offsetc - offsetb;
- // copy the event data to temporary storage
- var eventa = rom.slice(0x025D8D + offseta, 0x025D8D + offseta + asz);
- var eventb = rom.slice(0x025D8D + offsetb, 0x025D8D + offsetb + bsz);
- // update the new offset for where event+1 should go
- offsetb = offseta + bsz;
- // copy the event data back into the event table
- rom.set(eventb, 0x025D8D + offseta);
- rom.set(eventa, 0x025D8D + offsetb);
- // update the offset for event+1 back into the table
- rom.set([offsetb & 0xFF, (offsetb >> 8) & 0xFF], 0x26359 + ndxb * 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement