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-18 22:39:19 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-09-18 22:41:30 +0300
commit65f7185ad6e99eab403e9111b12e4c34db54136b (patch)
treefe9c241babd837026e4354ce4d582edaa422d7f9 /banking.asm
parentc13c394c93f78d51ea4abb822d766579ae90384c (diff)
Banking
Diffstat (limited to 'banking.asm')
-rw-r--r--banking.asm108
1 files changed, 105 insertions, 3 deletions
diff --git a/banking.asm b/banking.asm
index 76d99bd..4bfa054 100644
--- a/banking.asm
+++ b/banking.asm
@@ -1,7 +1,109 @@
-select_bank:
- tax
- sta unrom_bank_data, x
+
+PRG_BANK .rs 1 ; PRG_A BANK
+CHR_BANK .rs 1 ; CHR_A BANK
+FRAM_BANK .rs 1 ; FRAM BANK
+CART_CONFIG .rs 1 ; variable to store last config
+
+banking_init:
+ ; set mirrong, disabe CHR writing, PRG-RAM and flash writing
+ lda #0
+ sta <PRG_BANK
+ sta <CHR_BANK
+ sta <FRAM_BANK
+ sta $5003
+ sta $5005
+ lda #%00001000
+ ; store config
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+ ; select 16KB PRG bank at $8000-$BFFF (from A)
+select_prg_bank:
+ sta PRG_BANK
+ jsr sync_banks
+ rts
+
+ ; select 8KB CHR bank (from A)
+select_chr_bank:
+ sta CHR_BANK
+ jsr sync_banks
+ rts
+
+ ; actual bank selection
+sync_banks:
+ lda CHR_BANK
+ pha
+ and #%00011111
+ sta $5003
+ pla
asl A
asl A
+ sta TMP
+ lda PRG_BANK
+ asl A
+ asl A
+ and #%01111100
+ ora TMP
+ sta TMP
+ lda FRAM_BANK
+ and #%00000011
+ ora TMP
sta $5005
rts
+
+enable_prg_ram:
+ lda <CART_CONFIG
+ ora #%00000001
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+disable_prg_ram:
+ lda <CART_CONFIG
+ and #%11111110
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+enable_chr_write:
+ lda <CART_CONFIG
+ ora #%00000010
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+disable_chr_write:
+ lda <CART_CONFIG
+ and #%11111101
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+enable_flash_write:
+ lda <CART_CONFIG
+ ora #%00000100
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+disable_flash_write:
+ lda <CART_CONFIG
+ and #%11111011
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+enable_four_screen:
+ lda <CART_CONFIG
+ ora #%00100000
+ sta <CART_CONFIG
+ sta $5007
+ rts
+
+disable_four_screen:
+ lda <CART_CONFIG
+ and #%11011111
+ sta <CART_CONFIG
+ sta $5007
+ rts