Files
psopeeps-newserv/system/quests/includes/EnableRandomEnemies.inc.txt
T
2025-12-02 21:07:47 -08:00

104 lines
4.4 KiB
Plaintext

// This include enables the use of evt2 events (Challenge mode random enemies)
// in normal quests. The enable_random_enemies label must be called from the
// start label during the first frame, or it will have no effect.
// The v2 parts of this script are for documentation purposes only, since the
// write4 opcode doesn't work properly on any v2 version.
// Warning: This script is not tested; beware of bugs.
enable_random_enemies:
get_game_version r:game_version
jmpi_eq r:game_version, 2, enable_random_enemies_v2
jmpi_eq r:game_version, 3, enable_random_enemies_v3_gc
jmpi_eq r:game_version, 4, enable_random_enemies_v4
jmp enable_random_enemies_failure
enable_random_enemies_v2:
leta r0, r0
andi r0, 0xFF000000
jmpi_eq r0, 0x8C000000, enable_random_enemies_v2_dc
read4 r0, 0x00400080
leti r1, 0x00710B48 // 2OJW
jmpi_eq r0, 0x81EA106A, enable_random_enemies_success
leti r1, 0x0070ECE8 // 2OJZ
jmpi_eq r0, 0x53E8DF92, enable_random_enemies_success
jmp enable_random_enemies_failure
enable_random_enemies_v2_dc:
leti r1, 0x8C4ED344 // 2OJ5
read4 r0, 0x8C2F3748
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x8C4E6DE4 // 2OJF
read4 r0, 0x324F4A46
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x8C4ED344 // 2OEF
read4 r0, 0x8C2F3738
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x8C4DC844 // 2OPF
read4 r0, 0x8C2E7CE0
jmpi_eq r0, 0x61657244, enable_random_enemies_success
jmp enable_random_enemies_failure
enable_random_enemies_v3_gc:
read1 r0, 0x80000003
leti r1, 8
shift_left r0, r1
read1 r1, 0x80000007
or r0, r1
leti r1, 0x805C4DE4 // 3OJ2
jmpi_eq r0, 0x4A02, enable_random_enemies_success
leti r1, 0x805CF3AC // 3OJ3
jmpi_eq r0, 0x4A03, enable_random_enemies_success
leti r1, 0x805D682C // 3OJ4
jmpi_eq r0, 0x4A04, enable_random_enemies_success
leti r1, 0x805D65CC // 3OJ5
jmpi_eq r0, 0x4A05, enable_random_enemies_success
leti r1, 0x805C56DC // 3OE0
jmpi_eq r0, 0x4500, enable_random_enemies_success
leti r1, 0x805CC6BC // 3OE1
jmpi_eq r0, 0x4501, enable_random_enemies_success
leti r1, 0x805D5EDC // 3OE2
jmpi_eq r0, 0x4502, enable_random_enemies_success
leti r1, 0x805D211C // 3OP0
jmpi_eq r0, 0x5000, enable_random_enemies_success
jmp enable_random_enemies_failure
enable_random_enemies_v4:
leti r1, 0x0062D370 // 4OJB
read4 r0, 0x0043D460
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x0062D910 // 4OJD
read4 r0, 0x0043D7D0
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x00635448 // 4OJU
read4 r0, 0x00440FE0
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x00632930 // 4OED
read4 r0, 0x0044174C
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x006321C8 // 4OEU
read4 r0, 0x00440FEC
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x00632930 // 4OPD
read4 r0, 0x00441768
jmpi_eq r0, 0x61657244, enable_random_enemies_success
leti r1, 0x00632CC8 // 4OPU
read4 r0, 0x00441AF8
jmpi_eq r0, 0x61657244, enable_random_enemies_success
// TODO: We probably should do some kind of version detection here; currently
// we just assume it's 59NL if it's not any known DC version
read2 r0, 0x00400000
leti r1, 0x00A955E0 // 59NL
jmpi_eq r0, 0x5A4D, enable_random_enemies_success
jmp enable_random_enemies_failure
enable_random_enemies_success:
leti r0, 4
write4 r1, r0
leti r0, 1
ret
enable_random_enemies_failure:
leti r0, 0
ret