Browse Source

menu: fix DMA initialization (sprite glitches in some games)

Maximilian Rehkopf 11 years ago
parent
commit
e97396adc9
2 changed files with 50 additions and 26 deletions
  1. 47 22
      snes/main.a65
  2. 3 4
      snes/menu.a65

+ 47 - 22
snes/main.a65

@@ -11,7 +11,6 @@ GAME_MAIN:
 	sta @MCU_PARAM+2
 	sep #$20 : .as
 	stz $4200 ; inhibit VBlank NMI
-
 	rep #$20 : .al
 	lda @warm_signature	; Was CMD_RESET issued before reset?
 	cmp #$fa50		; If yes, then perform warm boot procedure
@@ -25,6 +24,7 @@ GAME_MAIN:
 	jsr killdma		; The following initialization processes must not touch memory
 	jsr waitblank		; structures used by the main menu !
 	jsr snes_init
+	cli
 	lda #$01
 	sta $420d 		; fast cpu
 	jsr setup_gfx
@@ -43,7 +43,6 @@ set_bank:
 
 coldboot:							; Regular, cold-start init
 	sep #$20 : .as
-
 	jsr killdma
 	jsr waitblank
 	jsr snes_init
@@ -67,56 +66,81 @@ coldboot:							; Regular, cold-start init
 	jmp @infloop	;infinite loop in WRAM
 
 killdma:
-	stz $420b
-	stz $420c
-
 	stz $4300
 	stz $4301
 	stz $4302
 	stz $4303
 	stz $4304
-
+	stz $4305
+	stz $4306
+	stz $4307
+	stz $4308
+	stz $4309
+	stz $430a
+	stz $430b
 	stz $4310
 	stz $4311
 	stz $4312
 	stz $4313
 	stz $4314
-
+	stz $4315
+	stz $4316
+	stz $4317
+	stz $4318
+	stz $4319
+	stz $431a
+	stz $431b
 	stz $4320
 	stz $4321
 	stz $4322
 	stz $4323
 	stz $4324
-
+	stz $4325
+	stz $4326
+	stz $4327
+	stz $4328
+	stz $4329
+	stz $432a
+	stz $432b
 	stz $4330
 	stz $4331
 	stz $4332
 	stz $4333
 	stz $4334
-
+	stz $4335
+	stz $4336
+	stz $4337
+	stz $4338
+	stz $4339
+	stz $433a
+	stz $433b
 	stz $4340
 	stz $4341
 	stz $4342
 	stz $4343
 	stz $4344
-
+	stz $4345
+	stz $4346
+	stz $4347
+	stz $4348
+	stz $4349
+	stz $434a
+	stz $434b
 	stz $4350
 	stz $4351
 	stz $4352
 	stz $4353
 	stz $4354
+	stz $4355
+	stz $4356
+	stz $4357
+	stz $4358
+	stz $4359
+	stz $435a
+	stz $435b
 
-	stz $4360
-	stz $4361
-	stz $4362
-	stz $4363
-	stz $4364
-
-	stz $4370
-	stz $4371
-	stz $4372
-	stz $4373
-	stz $4374
+	stz $420b
+	stz $420c
 	rts
 
 waitblank:
@@ -252,7 +276,7 @@ setup_gfx:
 tests:
 	sep #$20 : .as		;8-bit accumulator
 	rep #$10 : .xl		;16-bit index
-	lda #$03		;mode 3, mode 5 via HDMA :D
+	lda #$03		;mode 3, mode 5 via HDMA
 	sta $2105
 	lda #$58		;Tilemap addr 0xB000
 	ora #$02		;SC size 32x64
@@ -308,6 +332,7 @@ snes_init:
 	stz $420a		;
 	stz $420b		;
 	stz $420c		;
+	stz $420d		;
 	lda #$8f
 	sta $2100		;INIDISP: force blank
 	lda #$03		; 8x8+16x16; name=0; base=3

+ 3 - 4
snes/menu.a65

@@ -42,7 +42,6 @@ menuloop_s1
 	lda isr_done
 	lsr
 	bcc menuloop_s1
-
 	stz isr_done
 	jsr printtime
 	jsr menu_updates	;update stuff, check keys etc
@@ -541,12 +540,12 @@ select_file:
 	lda [dirptr_addr], y
 	sta @MCU_PARAM
 	sep #$20 : .as
-	lda #$01
-	sta @MCU_CMD
-select_file_fade:
 	lda #$00
 	sta @$4200
 	sei
+	lda #$01
+	sta @MCU_CMD
+select_file_fade:
 	jsl @wram_fadeloop
 	rts