;Copyright (C) 1997-2008 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )
;
;http://www.zsnes.com
;http://sourceforge.net/projects/zsnes
;https://zsnes.bountysource.com
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;version 2 as published by the Free Software Foundation.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;GNU General Public License for more details.
;
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

%include "macros.mac"



%ifdef __UNIXSDL__
%ifdef DEBUG
;; workaround NASM stabs generation bug 
;; http://sourceforge.net/tracker/index.php?func=detail&aid=1714701&group_id=6208&atid=106208
SECTION .text
        nop
%endif
%endif

SECTION .bss
NEWSYM wramdataa, resb 65536
NEWSYM ram7fa,    resb 65536
NEWSYM Inbetweendat, resd 4
NEWSYM opcjmptab, resd 256

NEWSYM Bank0datr8 ,  resd 256
NEWSYM Bank0datr16,  resd 256
NEWSYM Bank0datw8 ,  resd 256
NEWSYM Bank0datw16,  resd 256

NEWSYM tableA,  resd 256
NEWSYM tableB,  resd 256
NEWSYM tableC,  resd 256
NEWSYM tableD,  resd 256
NEWSYM tableE,  resd 256
NEWSYM tableF,  resd 256
NEWSYM tableG,  resd 256
NEWSYM tableH,  resd 256

NEWSYM tableAb,  resd 256
NEWSYM tableBb,  resd 256
NEWSYM tableCb,  resd 256
NEWSYM tableDb,  resd 256
NEWSYM tableEb,  resd 256
NEWSYM tableFb,  resd 256
NEWSYM tableGb,  resd 256
NEWSYM tableHb,  resd 256

NEWSYM tableAc,  resd 256
NEWSYM tableBc,  resd 256
NEWSYM tableCc,  resd 256
NEWSYM tableDc,  resd 256
NEWSYM tableEc,  resd 256
NEWSYM tableFc,  resd 256
NEWSYM tableGc,  resd 256
NEWSYM tableHc,  resd 256

NEWSYM SA1tableA,  resd 256
NEWSYM SA1tableB,  resd 256
NEWSYM SA1tableC,  resd 256
NEWSYM SA1tableD,  resd 256
NEWSYM SA1tableE,  resd 256
NEWSYM SA1tableF,  resd 256
NEWSYM SA1tableG,  resd 256
NEWSYM SA1tableH,  resd 256

NEWSYM tablead, resd 256
NEWSYM tableadb, resd 256
NEWSYM tableadc, resd 256
NEWSYM SA1tablead, resd 256

NEWSYM memtabler8, resd 256
NEWSYM memtablew8, resd 256
NEWSYM memtabler16, resd 256
NEWSYM memtablew16, resd 256
NEWSYM vidmemch2, resb 4096
NEWSYM vidmemch4, resb 4096
NEWSYM vidmemch8, resb 4096
NEWSYM snesmmap, resd 256
NEWSYM snesmap2, resd 256
NEWSYM cachebg
NEWSYM cachebg1,    resb 64
NEWSYM cachebg2,    resb 64
NEWSYM cachebg3,    resb 64
NEWSYM cachebg4,    resb 64
NEWSYM sprlefttot,  resb 256
NEWSYM sprleftpr,   resb 256
NEWSYM sprleftpr1,  resb 256
NEWSYM sprleftpr2,  resb 256
NEWSYM sprleftpr3,  resb 256
NEWSYM sprcnt,      resb 256
NEWSYM sprstart,    resb 256
NEWSYM sprtilecnt,  resb 256
NEWSYM sprend,      resb 256
NEWSYM sprendx,     resw 256
NEWSYM sprpriodata, resb 288
NEWSYM sprprtabc,   resb 64
NEWSYM sprprtabu,   resb 64
NEWSYM prevpal,   resw 256
NEWSYM winbgdata, resb 288
NEWSYM winspdata, resb 288
NEWSYM FxTable, resd 256
NEWSYM FxTableA1, resd 256
NEWSYM FxTableA2, resd 256
NEWSYM FxTableA3, resd 256
NEWSYM FxTableb, resd 256
NEWSYM FxTablebA1, resd 256
NEWSYM FxTablebA2, resd 256
NEWSYM FxTablebA3, resd 256
NEWSYM FxTablec, resd 256
NEWSYM FxTablecA1, resd 256
NEWSYM FxTablecA2, resd 256
NEWSYM FxTablecA3, resd 256
NEWSYM FxTabled, resd 256
NEWSYM FxTabledA1, resd 256
NEWSYM FxTabledA2, resd 256
NEWSYM FxTabledA3, resd 256
NEWSYM SfxMemTable, resd 256
NEWSYM fxxand,  resd 256
NEWSYM fxbit01, resd 256
NEWSYM fxbit23, resd 256
NEWSYM fxbit45, resd 256
NEWSYM fxbit67, resd 256
NEWSYM PLOTJmpa, resd 64
NEWSYM PLOTJmpb, resd 64

NEWSYM pal16b,   resd 256
NEWSYM pal16bcl, resd 256
NEWSYM pal16bclha, resd 256
NEWSYM pal16bxcl, resd 256
NEWSYM xtravbuf, resb 576
NEWSYM BG1SXl, resw 256
NEWSYM BG2SXl, resw 256
NEWSYM BG3SXl, resw 256
NEWSYM BG4SXl, resw 256
NEWSYM BG1SYl, resw 256
NEWSYM BG2SYl, resw 256
NEWSYM BG3SYl, resw 256
NEWSYM BG4SYl, resw 256
NEWSYM BGMA,   resb 256
NEWSYM BGFB,   resb 256
NEWSYM BG3PRI, resb 256
NEWSYM BGOPT1, resw 256
NEWSYM BGOPT2, resw 256
NEWSYM BGOPT3, resw 256
NEWSYM BGOPT4, resw 256
NEWSYM BGPT1,  resw 256
NEWSYM BGPT2,  resw 256
NEWSYM BGPT3,  resw 256
NEWSYM BGPT4,  resw 256
NEWSYM BGPT1X, resw 256
NEWSYM BGPT2X, resw 256
NEWSYM BGPT3X, resw 256
NEWSYM BGPT4X, resw 256
NEWSYM BGPT1Y, resw 256
NEWSYM BGPT2Y, resw 256
NEWSYM BGPT3Y, resw 256
NEWSYM BGPT4Y, resw 256
NEWSYM BGMS1,  resw 1024
NEWSYM prdata, resb 256
NEWSYM prdatb, resb 256
NEWSYM prdatc, resb 256
NEWSYM ngpalcon2b, resd 20h
NEWSYM ngpalcon4b, resd 20h
NEWSYM ngpalcon8b, resd 20h
NEWSYM tltype2b, resb 4096
NEWSYM tltype4b, resb 2048
NEWSYM tltype8b, resb 1024

NEWSYM ngptrdat, resd 1024
NEWSYM ngceax,   resd 1024
NEWSYM ngcedi,   resd 1024
NEWSYM bgtxad,   resw 1024
NEWSYM sprtbng,  resd 256
NEWSYM sprtlng,  resb 256
NEWSYM mosszng,  resb 256
NEWSYM mosenng,  resb 256

SECTION .data
ALIGN32

NEWSYM vidmemch2s, times 4096 db 0FFh
NEWSYM vidmemch4s, times 2048 db 0FFh
NEWSYM vidmemch8s, times 1024 db 0FFh

SECTION .bss

NEWSYM mode7ab,  resd 256
NEWSYM mode7cd,  resd 256
NEWSYM mode7xy,  resd 256
NEWSYM mode7st,  resb 256

NEWSYM t16x161,  resb 256
NEWSYM t16x162,  resb 256
NEWSYM t16x163,  resb 256
NEWSYM t16x164,  resb 256

NEWSYM intrlng,  resb 256
NEWSYM mode7hr,  resb 256

NEWSYM scadsng,  resb 256
NEWSYM scadtng,  resb 256

NEWSYM scbcong,  resw 256

NEWSYM cpalval,  resd 256
NEWSYM cgfxmod,  resb 256

NEWSYM winboundary, resd 256
NEWSYM winbg1enval, resb 256
NEWSYM winbg2enval, resb 256
NEWSYM winbg3enval, resb 256
NEWSYM winbg4enval, resb 256
NEWSYM winbgobjenval, resb 256
NEWSYM winbgbackenval, resb 256
NEWSYM winlogicaval, resw 256

NEWSYM winbg1envals, resb 256
NEWSYM winbg2envals, resb 256
NEWSYM winbg3envals, resb 256
NEWSYM winbg4envals, resb 256
NEWSYM winbgobjenvals, resb 256
NEWSYM winbgbackenvals, resb 256
NEWSYM winbg1envalm, resb 256
NEWSYM winbg2envalm, resb 256
NEWSYM winbg3envalm, resb 256
NEWSYM winbg4envalm, resb 256
NEWSYM winbgobjenvalm, resb 256
NEWSYM winbgbackenvalm, resb 256

NEWSYM FillSubScr, resb 256

NEWSYM objclineptr, resd 256    ; l1,r1,l2,r2,en,log,ptr

SECTION .data
ALIGN32

NEWSYM objwlrpos  , times 256 dd 0FFFFFFFFh
NEWSYM objwen     , times 256 dw 0FFFFh    ; en,log

SECTION .bss

NEWSYM SpecialLine, resb 256

NEWSYM bgallchange, resb 256
NEWSYM bg1change, resb 256
NEWSYM bg2change, resb 256
NEWSYM bg3change, resb 256
NEWSYM bg4change, resb 256
NEWSYM bgwinchange, resb 256

NEWSYM PrevPicture, resb 64*56*2
