Add tools/ and manual/, move sources to src/
[dpadhero2.git] / src / mmc / mmc3.asm
blob69e7a50819338897cd258dbf5b8f1c919dc06fd8
2 ; Copyright (C) 2004, 2005 Kent Hansen.
4 ; This file is part of Neotoxin.
6 ; Neotoxin is free software; you can redistribute it and/or modify
7 ; it under the terms of the GNU General Public License as published by
8 ; the Free Software Foundation; either version 2 of the License, or
9 ; (at your option) any later version.
11 ; Neotoxin is distributed in the hope that it will be useful,
12 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ; GNU General Public License for more details.
16 ; You should have received a copy of the GNU General Public License
17 ; along with this program; if not, write to the Free Software
18 ; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 ; Description:
22 ; MMC3-specific data and code.
24 .include "mmc3.h"
26 .dataseg
28 .public irq_count .byte
30 ; The CHR bank indices that are set in NMI.
31 .public chr_banks .byte[6]
33 .public chr_addr_toggle .byte
35 current_bank .byte
37 .codeseg
39 .public reset_bank
40 .public set_bank
41 .public swap_bank
43 ; Load the 16K bank in current_bank
44 reset_bank:
45 lda current_bank
46 ; Set and load 16K bank in A
47 set_bank:
48 sta current_bank
49 ; Load 16K bank in A, but keep old current_bank value
50 swap_bank:
51 asl
52 ldy #$06 ; command = swap 1st 8K bank
53 sty MMC3_CTRL_REG
54 sta MMC3_PAGE_REG
55 iny ; command = swap 2nd 8K bank
56 ora #1
57 sty MMC3_CTRL_REG
58 sta MMC3_PAGE_REG
59 rts
61 .end