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

github.com/coolgirl-multicart/coolgirl-multirom-builder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-09-17 01:13:18 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-09-17 01:13:18 +0300
commita95ef293d4c49ac8cc15f1e52000d6548c794990 (patch)
treef9e5c15cb83101c01a58b000e235ae561692771e /preloader.asm
parentc1a0b52bc997859f7ba7f0fba0b76c9226ea1e95 (diff)
Refactoring
Diffstat (limited to 'preloader.asm')
-rw-r--r--preloader.asm135
1 files changed, 135 insertions, 0 deletions
diff --git a/preloader.asm b/preloader.asm
new file mode 100644
index 0000000..32b7337
--- /dev/null
+++ b/preloader.asm
@@ -0,0 +1,135 @@
+ ; starting game!
+start_game:
+ sei ; no interrupts
+
+ lda #%00000000 ; disable PPU
+ sta $2000
+ lda #%00000000
+ sta $2001
+
+ .if SECRETS>=3
+ ; check for konami code
+ lda <KONAMI_CODE_STATE
+ cmp konami_code_length
+ bne .no_konami_code
+ lda games_count
+ clc
+ adc #2
+ sta <SELECTED_GAME
+ lda games_count+1
+ adc #0
+ sta <SELECTED_GAME+1
+.no_konami_code:
+ .endif
+
+ jsr waitblank_simple
+ lda #%00100000 ; four-screen
+ sta $5007
+ jsr clear_screen ; clear NTRAM
+ lda #%00001011 ; mirroring, chr-write, enable sram
+ sta $5007
+ jsr clear_screen ; clear nametables
+ jsr clear_sprites
+ jsr sprite_dma_copy
+
+ lda SELECTED_GAME+1
+ jsr select_bank
+ ldx SELECTED_GAME
+ lda loader_data_game_type, x
+ and CONSOLE_TYPE
+ beq compatible_console
+
+ ; not compatible console!
+ ; save state, without game save
+ lda #0
+ sta <LAST_STARTED_SAVE
+ jsr save_state
+ lda #$21
+ sta $2006
+ lda #$A0
+ sta $2006
+ ldy #0
+.incompatible_print_error:
+ ; text
+ lda incompatible_console_text, y
+ sta $2007
+ iny
+ cmp #0
+ bne .incompatible_print_error
+ lda #$23
+ sta $2006
+ lda #$C8
+ sta $2006
+ lda #$FF
+ ldy #$38
+.incompatible_print_error_palette:
+ sta $2007
+ dey
+ bne .incompatible_print_error_palette
+ jsr waitblank_simple
+ bit $2002
+ lda #0
+ sta $2005
+ sta $2005
+ lda #%00001000
+ sta $2000
+ lda #%00001010
+ sta $2001
+ jsr waitblank_simple
+.incompatible_print_wait_no_button:
+ jsr read_controller
+ lda <BUTTONS
+ bne .incompatible_print_wait_no_button
+.incompatible_print_wait_button:
+ jsr read_controller
+ lda <BUTTONS
+ beq .incompatible_print_wait_button
+ jmp Start
+
+compatible_console:
+ ldx #15
+.start_game_wait_sound:
+ jsr waitblank_simple
+ dex
+ bne .start_game_wait_sound
+
+ ; loading game settings
+ ldx SELECTED_GAME
+ lda loader_data_reg_0, x
+ sta LOADER_REG_0
+ lda loader_data_reg_1, x
+ sta LOADER_REG_1
+ lda loader_data_reg_2, x
+ sta LOADER_REG_2
+ lda loader_data_reg_3, x
+ sta LOADER_REG_3
+ lda loader_data_reg_4, x
+ sta LOADER_REG_4
+ lda loader_data_reg_5, x
+ sta LOADER_REG_5
+ lda loader_data_reg_6, x
+ sta LOADER_REG_6
+ lda loader_data_reg_7, x
+ sta LOADER_REG_7
+ lda loader_data_chr_start_bank_h, x
+ sta LOADER_CHR_START_H
+ lda loader_data_chr_start_bank_l, x
+ sta LOADER_CHR_START_L
+ lda loader_data_chr_start_bank_s, x
+ sta LOADER_CHR_START_S
+ lda loader_data_chr_count, x
+ sta LOADER_CHR_LEFT
+ lda #0
+ sta LOADER_CHR_COUNT
+ lda loader_data_game_save, x
+ sta LOADER_GAME_SAVE
+ lda #2
+ sta LOADER_GAME_SAVE_BANK
+ ; loading battery backed save if need
+ jsr load_save
+ lda LOADER_GAME_SAVE
+ sta LAST_STARTED_SAVE ; save ID of save
+ ; saving state
+ jsr save_state
+
+ jmp loader