diff options
| author | Miquel Sabaté Solà <mssola@mssola.com> | 2026-03-07 23:42:46 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <mssola@mssola.com> | 2026-03-08 16:51:25 +0100 |
| commit | 0454655006afe7f83f8de2280b758fb323487e76 (patch) | |
| tree | 85fba9ec369c32235b2550dd864edb60e986ecfe /src | |
| parent | 220c80b987ba54d709180e3d95e9e0d82af4249c (diff) | |
| download | jetpac.nes-0454655006afe7f83f8de2280b758fb323487e76.tar.gz jetpac.nes-0454655006afe7f83f8de2280b758fb323487e76.zip | |
Show lifes for player 2 if available
Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/assets.s | 14 | ||||
| -rw-r--r-- | src/interrupts.s | 29 |
2 files changed, 38 insertions, 5 deletions
diff --git a/src/assets.s b/src/assets.s index ecdfbe4..139ed5f 100644 --- a/src/assets.s +++ b/src/assets.s @@ -129,6 +129,20 @@ lda #$30 sta PPU::m_data + ;; If there is a player 2, show the little astronaut from the HUD in + ;; order to indicate its lifes. + lda Globals::zp_multiplayer + and #$04 + beq @end + bit PPU::m_status + lda #$28 + sta PPU::m_address + lda #$57 + sta PPU::m_address + lda #$35 + sta PPU::m_data + + @end: rts .endproc diff --git a/src/interrupts.s b/src/interrupts.s index e909d17..775834a 100644 --- a/src/interrupts.s +++ b/src/interrupts.s @@ -6,12 +6,15 @@ ;; If we are on a dev environment, account for any frame drops. .ifdef PARTIAL - bpl @account_for_frame_drop + bmi @after_frame_check + jmp @account_for_frame_drop + @after_frame_check: .else - bpl @end + bmi @save_registers + rti .endif - ;; Save registers. +@save_registers: pha txa pha @@ -48,7 +51,9 @@ and #%00001000 beq @global_flags - ;; Yeah! TODO: this is only done for player 1. + ;; Yeah! + + ;; Update for player 1. bit PPU::m_status lda #$28 sta PPU::m_address @@ -59,6 +64,21 @@ adc #$10 sta PPU::m_data + ;; Update for player 2 if exists. + bit Globals::zp_multiplayer + bpl @unset_life_flag + + bit PPU::m_status + lda #$28 + sta PPU::m_address + lda #$56 + sta PPU::m_address + lda Player::zp_lifes + 1 + clc + adc #$10 + sta PPU::m_data + +@unset_life_flag: ;; And unset the 'life' flag from the player. lda Player::zp_state and #%11110111 @@ -112,7 +132,6 @@ tax pla -@end: rti ;; If we are on a dev environment, account for any frame drops. |
