Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/nes-warface.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-11-06 13:46:18 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-11-06 13:46:18 +0300
commitfb80a2901c7b68da0b4c229b265553fa6b3eae37 (patch)
tree3927ee8d9ad057f06ebbbe3f9c3c79f228ff3b74
parent761f125fa530bbb90caa75f2433d330feff7adc3 (diff)
Console detect fix
-rw-r--r--bank0_subroutines.asm65
-rw-r--r--buttons.asm5
-rw-r--r--text/0_0.txt2
-rw-r--r--warface.asm16
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