diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2020-11-06 13:46:18 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2020-11-06 13:46:18 +0300 |
commit | fb80a2901c7b68da0b4c229b265553fa6b3eae37 (patch) | |
tree | 3927ee8d9ad057f06ebbbe3f9c3c79f228ff3b74 | |
parent | 761f125fa530bbb90caa75f2433d330feff7adc3 (diff) |
Console detect fix
-rw-r--r-- | bank0_subroutines.asm | 65 | ||||
-rw-r--r-- | buttons.asm | 5 | ||||
-rw-r--r-- | text/0_0.txt | 2 | ||||
-rw-r--r-- | warface.asm | 16 |
4 files changed, 53 insertions, 35 deletions
diff --git a/bank0_subroutines.asm b/bank0_subroutines.asm index f3333ae..d442ad3 100644 --- a/bank0_subroutines.asm +++ b/bank0_subroutines.asm @@ -21,29 +21,40 @@ init: iny
bne .memory_clean_loop
+ ; очистка спрайтов
+ lda #LOW(SPRITES)
+ sta COPY_SOURCE_ADDR
+ lda #HIGH(SPRITES)
+ sta COPY_SOURCE_ADDR+1
+ lda #$FF
+ ldy #0
+.sprites_clean_loop:
+ sta [COPY_SOURCE_ADDR], y
+ iny
+ bne .sprites_clean_loop
lda #0
sta OAMADDR
- lda #$FF
- ldx #0
-.clean_oam_next:
- sta OAMDATA
- inx
- bne .clean_oam_next
+ lda #HIGH(SPRITES)
+ sta OAMDMA
; определяем тип консоли
- jsr wait_blank_simple
-console_detect:
+ lda #%00000000 ; отключаем NMI
+ sta PPUCTRL
+console_detect_init:
+ bit PPUSTATUS
+ bpl console_detect_init
+console_detect_loop:
inx
bne console_detect_s
iny
console_detect_s:
- lda PPUSTATUS
- bpl console_detect
+ bit PPUSTATUS
+ bpl console_detect_loop
lda #$00
cpy #$09
bne console_detect_not_ntsc
console_detect_not_ntsc:
- cpy #$0A
+ cpy #$08
bne console_detect_not_pal
ora #$01
console_detect_not_pal:
@@ -52,6 +63,9 @@ console_detect_not_pal: ora #$01
console_detect_not_dendy:
sta <CONSOLE_TYPE
+ ; включаем NMI
+ lda #%10000000
+ sta PPUCTRL
; Обнуляем звуковые регистры
lda #0
@@ -228,6 +242,7 @@ dim_out_s: rts
print_text:
+ jsr wait_blank
; выключаем PPU
jsr disable_ppu
; выбираем последний CHR банк
@@ -344,21 +359,23 @@ symbol_print: bne .skip_sprite_draw
; настраиваем спрайт
- jsr wait_blank
lda #$FF
- sta OAMDATA
+ sta SPRITES
pla
- sta OAMDATA
+ sta SPRITES+1
pha
lda #0
- sta OAMDATA
+ sta SPRITES+2
lda TEXT_POS
asl A
asl A
asl A
- sta OAMDATA
-
+ sta SPRITES+3
jsr wait_blank
+ lda #0
+ sta OAMADDR
+ lda #HIGH(SPRITES)
+ sta OAMDMA
; плавно увеличиваем яркость
jsr preload_palette
@@ -376,11 +393,13 @@ symbol_print: .skip_sprite_draw:
; скрываем спрайт
+ lda #$FF
+ sta SPRITES
jsr wait_blank
lda #0
sta OAMADDR
- lda #$FF
- sta OAMDATA
+ lda #HIGH(SPRITES)
+ sta OAMDMA
; вычисляем адреса
;jsr wait_blank
jsr symbol_address
@@ -391,8 +410,6 @@ symbol_print: rts
.set_sprite_y:
- lda #0
- sta OAMADDR
lda TEXT_LINE
asl A
asl A
@@ -411,7 +428,11 @@ symbol_print: sec
sbc #1
.not_scrolling:
- sta OAMDATA
+ sta SPRITES
+ lda #0
+ sta OAMADDR
+ lda #HIGH(SPRITES)
+ sta OAMDMA
rts
; переход на следующую строку
diff --git a/buttons.asm b/buttons.asm index f42b777..a8bda2c 100644 --- a/buttons.asm +++ b/buttons.asm @@ -1,8 +1,3 @@ -BUTTONS .rs 1 ; currently pressed buttons
-BUTTONS_TMP .rs 1 ; temporary variable for buttons
-LAST_KONAMI_BUTTON .rs 1 ; last button state for Konami Code check
-KONAMI_CODE_STATE .rs 1 ; Konami Code state
-KONAMI_CODE_TRIGGERED .rs 1 ; Konami Code triggered flag
; controller reading, two times
read_controller:
diff --git a/text/0_0.txt b/text/0_0.txt index 51e9bae..efe0899 100644 --- a/text/0_0.txt +++ b/text/0_0.txt @@ -22,7 +22,7 @@ Я видел яркую вспышку, почувствовал, как земля заходила ходуном под ногами.
-Затем все затихло. Весь мир потерял потерял звуки.
+Затем все затихло. Весь мир потерял звуки.
Зловещая тишина сводила меня с ума.
diff --git a/warface.asm b/warface.asm index ae35a6b..505ac4c 100644 --- a/warface.asm +++ b/warface.asm @@ -36,6 +36,14 @@ SCROLL_POS .rs 1 ; текущая позиция скроллинга SCROLL_NT .rs 1 ; текущий nametable скроллинга
SCROLL_TARGET_POS .rs 1 ; целевая позиция скроллинга
THE_END .rs 1 ; флаг, что пора зациклить
+BUTTONS .rs 1 ; currently pressed buttons
+BUTTONS_TMP .rs 1 ; temporary variable for buttons
+LAST_KONAMI_BUTTON .rs 1 ; last button state for Konami Code check
+KONAMI_CODE_STATE .rs 1 ; Konami Code state
+KONAMI_CODE_TRIGGERED .rs 1 ; Konami Code triggered flag
+
+ .rsset $0400
+SPRITES .rs 256 ; тут хранятся спрайты
.bank 12 ; PRG банк #12, середина PRG
.org $9213
@@ -65,7 +73,7 @@ Start: jsr select_prg_bank
lda #0 ; номер трека
; в регистре X задаётся регион: PAL или NTSC
- ldx #CONSOLE_TYPE
+ ldx CONSOLE_TYPE
jsr $A999 ; Инициализируем музыкальный проигрыватель
ldx #30
@@ -396,12 +404,6 @@ disable_ppu: rts
; субрутина простого ожидания vblank
-wait_blank_ppu_status:
- bit PPUSTATUS
- bpl wait_blank_ppu_status
- rts
-
- ; субрутина простого ожидания vblank
wait_blank_simple:
pha
lda FRAMES
|