Boss 1 actions:
Language: asm
; State = 0x8, fly with 2 divings
$D320:A5 8F LDA GlobalTmr = #$9F A:00 X:0A Y:18 S:F9 P:nvUBdIZc
$D322:65 90 ADC RNG = #$24 A:9F X:0A Y:18 S:F9 P:NvUBdIzc
$D324:85 90 STA RNG = #$24 A:C3 X:0A Y:18 S:F9 P:NvUBdIzc
$D326:E6 90 INC RNG = #$C3 A:C3 X:0A Y:18 S:F9 P:NvUBdIzc
$D328:60 RTS (from $D320) ----------------- A:C3 X:0A Y:18 S:F9 P:NvUBdIzc
$AA1E:29 20 AND #$20 A:C3 X:0A Y:18 S:FB P:NvUBdIzc ; is 6th bit 1 or 0?
$AA20:D0 08 BNE $AA2A A:00 X:0A Y:18 S:FB P:nvUBdIZc
$AA22:A9 08 LDA #$08 A:00 X:0A Y:18 S:FB P:nvUBdIZc ; no branch
$AA24:9D 0E 04 STA State,X @ $0418 = #$0E A:08 X:0A Y:18 S:FB P:nvUBdIzc ; do 2 divings
; State = 0x10, Fly down slowly (required for last pattern)
$D320:A5 8F LDA GlobalTmr = #$4F A:01 X:0A Y:18 S:F9 P:nvUBdIzC
$D322:65 90 ADC RNG = #$D0 A:4F X:0A Y:18 S:F9 P:nvUBdIzC
$D324:85 90 STA RNG = #$D0 A:20 X:0A Y:18 S:F9 P:nvUBdIzC
$D326:E6 90 INC RNG = #$20 A:20 X:0A Y:18 S:F9 P:nvUBdIzC
$D328:60 RTS (from $D320) ----------------- A:20 X:0A Y:18 S:F9 P:nvUBdIzC
$AA1E:29 20 AND #$20 A:20 X:0A Y:18 S:FB P:nvUBdIzC ; is 6th bit 1 or 0?
$AA20:D0 08 BNE $AA2A A:20 X:0A Y:18 S:FB P:nvUBdIzC
$AA2A:A9 18 LDA #$18 A:20 X:0A Y:18 S:FB P:nvUBdIzC ; branch
$AA2C:9D 5E 04 STA Yspeed,X @ $0468 = #$19 A:18 X:0A Y:18 S:FB P:nvUBdIzC
$AA2F:20 66 8D JSR $8D66 A:18 X:0A Y:18 S:FB P:nvUBdIzC
$8D66:A6 B1 LDX SlotPtr = #$0A A:18 X:0A Y:18 S:F9 P:nvUBdIzC
$8D68:FE 0E 04 INC State,X @ $0418 = #$0E A:18 X:0A Y:18 S:F9 P:nvUBdIzC
$8D6B:FE 0E 04 INC State,X @ $0418 = #$0F A:18 X:0A Y:18 S:F9 P:nvUBdIzC ; fly down
$8D6E:60 RTS (from $8D66) ----------------- A:18 X:0A Y:18 S:F9 P:nvUBdIzC
Add these lines to the script to see the value he reads, whenever it is 20, he does slow flight down. RNG during the level must be manipulated so that he gets 20 on the last pattern. Or maybe even on both, could save us 2 hit points to spend during the level, instead of 1.
Language: lua
boss1RNG = AND(RNG,0x20)
gui.text( 0, 24, string.format("AND: %X",boss1RNG))