.$Qi!= $!R FJJ'1X3οߔK VrMsʚaX'v#aV8@Ro0`ր%cN84>Dxˈ:e|c<%8 r!GOOMBAGOOMBAGMBAHٟHYHdAD dT,0Q 4 4:9Q 4 4:N8Q 4 4: S 4:8  0S`H`hH`/.$Qi!= $!R FJJ'1X3οߔK VrMsʚaX'v#aV8@Ro0`ր%cN84>Dxˈ:e|c<%8 r!GOOMBAGOOMBAGMBA 0Uih7 RUD@ 0X@ q`PUUQ HAptbd5Q1QUUQl)`D` P@ @I Hps'6FTQE%In@p`P+5@;7g;#Oh(qF&PRQ oOwww.a$PcWЏ`^&'_ ?dP@*Q?piIp`5SQUEU`ߖ_p`_c~P?@G@FTtU4b_`dHpw6fP0;UhGsPpIwrF@TPAUE@?c@`@wGfaUP ?Ph`tp@ff1UU$b!o{׀(2?ulB_a{%aQbrf>)< ^ 5~C?B{A H7p6 `^Q5UU@IFtrdUQE@??faUR0U?@)A)(wJfZS00%1[1F!wpfU!U UU4AwwGf~_ @DwfaS#P`@A0PU@k_ ! T?2ifa$UEDQ$!?^%^?#I@hwttFbBEqA  wBd@Q@biq_TR0BC?ww??QbTUBU4$??dQC!?ۙA_swwbE3_Ai~$_~`1P0S$I`QiÆqw 6UT'@i `h`GGGf&A%`iݑhHq#FF]E$E~a Iqi!GOETHH#`P1a C@q@81b@r6F0`ffPFR??01?HB*i8btwa79*Q@ _ TPp#```0w%FS ?`0660SS R8 DqF6 Qy@`p?TPU4q? ~@  7 _0\/zz @0H??*kp3$$$$RSSC4FF%RteC4VG%RddC455%BBBBX=RJZ9gs{X=LJZ1gs{gCClC)C] 𵆰KN$kIHRR!B!GOys@-h$U`!!4, W@  7B  ?' xG 7(9"HBa8dI# h@C8!> - @'% x 7 / ' L '` h #@ Hx( GhCXC C2C J'PhR{3:3z;@* 9+ѐpGhC񵂰 )Hh.8PCpR(0 9 B %($EHh( "B"1# .1o0:0z!@4B Hh ))IBIIIBIIAG1hCHIh h`B@@#@Oi#B i1a)ۉ HaaI ` !@CpGhCCC!"R( KR(HQ1B !HpG0  #GK *KK#A#CETS0 \ ,!!1BCR0(۰pG0*A A"I2 "HpG@I" pG@NhH1iCA@@ 0a xA(h (ya` h 7B  ?'! 1@#BHМC` GC "JI# h@#[B EHpEI hO#'<pK $x#Cp"Cp8< $Qx9K!CQph !#B!`4I`4I3IMH`$] h`!!4,*L C8a!Lhi@Hhh (ڠ!I!IXH` 8@H8@$( 2`!4 ,L C I  IMGC2lCC `8` $M/`U/ HC(a/ / ` Ӯh/ѰI/IX` @/(/ H @O8CGC h`` G G Oh 0*2Rh"B"]GCK"hB"%0NGCB828!RGOFFONwith RONOFFSLOWMO5min10min30minOFFIIIIIIIIIIIIIIINormalTurboCrapProtGBAGBPNDS1P2PLink2PLink3PLink4PBlackGreyBlueNoneYellowGreyMulti1Multi2ZeldaMetroidAdvIslandAdvIsland2BaloonKidBatmanBatmanROTJBionicComCV AdvDr.MarioKirbyDK LandDMGMGBSGBCGBAGBAuto Goomba Pogoomba ' I" ;`AHx('@I XhF? @HAIx XiFhFiF" F;O @ 2 2 > GPowered by XGFLASH2.com 2005uChav2.2 on wC`C`B autofire: A autofire: 2`Controller: Display->Other Settings->Link TransferSleepRestartSave State->Load State->Manage SRAM->Exit Q" 6h:H;Ix X:hFiF 8H8Ox8:XhFiF 6L7Ix X6hFiF x4I X4hFiF 4H4h :XhFiF y0:XhFiF /H/x:XhFiF /H/hhFiF G Other Settings(`VSync: _`FPS-Meter: C`Autosleep: `EWRAM speed: 2Swap A-B: Autoload state: (Goomba detection: PaGame Boy:  " HIh XhFIiF 7HIx XhFfOKBa  @&60`.CH p ;pAH[#  >Np00Xp!000pp@;p#C3H&1H1A1HA(1%H&V f>Й(`]0 Z&v  # 06N<,$$ 4D=- Hh. 47?/ JGgCTCC brac#\T3:рpG H!I LhB 8hB <`x`Gg1W!"Cxx;Cx?;Cx?;CY02*ۀpG e") |"* wZ'?рG Write error! Memory full. Delete some games.1K1Oh#[<f'BC#fB7B+) #[B 5 (92>.'C.`h`=- 9*d'C'``` I02 `!Ip02B @I9 GCg^)2:p01ypG "S!H9 !7< 9< !7< }9 79 G00:00:00 - 00/00kKCIh h&1+AL! + + h)89B)) !`  Y'# ` B )"B" 0 1_Bѡh7  &.ѽB  i"2 D/"3 =( ("B" 0." )7 (" H` `GCgPush SELECT to deleteSave state:Load state:Erase SRAM:CKL(#[30 g``Hh`Hh2`HOx(8I Hh1.1"8NGg0CPCuCgCTC LjF ` (ќG  "! h-!h8BH ` 8@jF (H8@C #L!:#k LjF `  @"! h("! h 8@jF H8@GgCd#C% I NBh3B1` *I `GgCIh" J)0% )>hI`GgCH#h@pGlC( Hh/jF!(HhGPCTC(јG ") O#!";HhjF!v( "!6( g Saving.gPC(4! N(-h()!D("#[M0"#K!I H631!"H`!8Gg0!HKJ?"!GgA(< Hx8Hhw! ! -hB "RIH<// "Ah J00""RIH"GdCPCHx"Hh-jF! (hBE"R I HjF!8(zGdCPC  .MiF(`(G @&h%(B(!{%mH5hB#[B I") `%5<- M"!(h)h8BH(` 8@iF ( H8@CpC ROM not found.I(IjF! ("L#[0" IHhqHhHqHIx xCI x CI xICqHxHhO`/"! #[0"Gg0g8\_C(C_dCPC(!jF! (Jy`Ay J`y Jp!@ Jp!@ J#pI@@ pG8\_C(C_&O(C !I%=p70BjF! Z(L#[0"IHJhqHhHqHxqxyCq/`"! #[0"Gg0g8\_CC8O8J9j `%3L.S][D/7>W S BՉ-63CCBiсщ) щIaZ %KB$H!!с!C P CKBH!KBH!KBPh(Е`h(Аh8`HH8bH#CpG!`Q`сQ`gC @0&@  HKhB Hx( H! I CII#CpGC0vC CB0ӄFR) xp@Iу:Ӱɸ:Ұ 2 p Cp p p xpI@R`FpG CCXPpGR\TpG/Y@P@ KRB#BBRB[AB Z@P@Y@pGGGGG G(G0G8G CфF0 LC+@# @pB0`FpG xpI[*pG2x+ x1p2+pG/KRB#BBRB[ABpGFCˀ  xx[IR gFpGFRp@: C C  :ӁTR`FpGxG0`B @ @   !QR B0`BaB/F C ӰL;C+@рҰ xpI@+ R`FpG p@R`FpGxG--N< \/ Divide by zero///4 ,P$PP //38//1e "" \  /\ \$/< }Ϡ0\ }Ϡ@\  @0}ϠP\ // XTS4xVͫ0 FhnzZ~h2 0;.Yk  RT;h;h;h;;;T; T; = = =<<<<<===<<<<<<" =l=H=T; O-<04 +**)HAIB*@/@GPO|xt,`- .{H x@@44P,T(X$\ㄔGO 2 ZB^?O/pD-逡$ b(`4@ 0 PPQ0S$pD/XCP ` w9`9@9,C BB4Cx0@P`x404x40x4L-`ጠ匰Z @O PPQP$T0IE?@  L/xxxx h>P`@: ;;,'t,C2\+phà`àbàcàdàeàhàiàlàmàpàrà`sàtàu` àxàyà|à}ààà`bcdehilmprs`tu` xy|}wxFFFG8GhGGG H(??(@@(AA(B?(M3"o{3"o{3"o{3"o{UUUUUUUUUUUUUUUUUUZJZcUUUތk)ZcZJggU F%)YZJZcޢBk{URZJ!1sJ!!scR)祥{))Bu)ksJ!!scR)祥{))BތZsJ!!kkcB{))BȐPDBRRRRZZk{!BRZ{9RZ{9RZ{9Zk{!Bε!)99JZ9ﭥkZZB猥BRkRRRBZޜkf!BRUURBΌZR>sB3 wx#5 ZM`) UUUѩQH%GGM[jcBs{!%   @h*>` ; 8L 50@  ,$ /P-"P-p???????-???/@-L =@P 1 @@@0S@/0S@/                  @-BJRZbjrz "&.B1.07, T\ 0P@0/P00/$0/  R 0/޼ DP`l  0܀P:O-@PB A  ᠀堐cp@DA`PPP` \ EX P: O 0@-S"I 0  \0 Π0 S( 000 Q@@Ao 0!CexV4-$2X$QP$? @P,,0 R :Q0A 2 --N< \  Divide by zero!"!!"!"!!""!!"!""""!"!!""!!"!""""!!!!!!""""!"!!"!!!!!!!"!!""!!"!!!!!!!"""""!!"!!!!!!!!!!!!!0CFGNINTENDOxG[?xGbxGDxG\?xGZxGxG\xG xGxGxGexGxGqxGxGXTW@XTW@XTWXXTW$ %Ƞ B.瀀XTWX XTW2T12@XTW21TE112@XTWX\ကXTW0@2#D#@XTWČ~ B. B.XTW'1p2#!2XTW%Ƞ +LကXTWXE XTWe\2T12eT@XTWe\21TE112eT@XTWTXကXTW0L2#@#L@XTW$ PI@XTWhXTW$ &Ƞ B.瀀XTWh XTW2d12@XTW21dF112@XTWhlကXTW0E@2#@XTWXTW'1p2#!2XTW&Ƞ +LကXTWhF XTWfl2d12fd@XTWfl21dF112fd@XTWdhကXTW(0d@2E@XTW@HXTWxXTW$ 'Ƞ B.x XTWx XTW2t12@XTW21tG112@XTWx|ကXTWD QDR T"@ 22#1@XTW@T 2231@XTW@HXTW'1p2#!2XTW'Ƞ +xLကXTWxG XTWg|2t12gt@XTWg|21tG112gt@XTWtxကXTWD$ 2@XTW@HXTW|XTW$ 'Ƞ B.xG XTW||倀XTW'Ƞ + 212  B.XTW'Ƞ + 21@112  B.XTW'Ƞ B.XTW12@XTW@HXTW|'1p2#!2XTW'Ƞ +xGLကXTW|@|倀XTW2D12@XTW21DD112@XTWLကXTW22#@XTWXT@XTWXP@XTWXT@XTWXP@XTWXT@XTW'Ƞ +X\ကXTWXP@XTWT%T@XTWT&T\@XTWTP@XTWT'T\@XTWTP@XTW'Ƞ +TXကXTWT$T@XTWh`@XTWhd@XTWhd@XTWh`@XTWhd@XTW'Ƞ +hlကXTWh`@XTWd%dl@XTWd`@XTWd&d@XTWd'dl@XTWd`@XTW'Ƞ +dhကXTWd$d@XTWxp@XTWxt@XTWxp@XTWxt@XTWxt@XTW'Ƞ +x|ကXTWxp@XTWt%t|@XTWtp@XTWt&t|@XTWtp@XTWt't@XTW'Ƞ +txကXTWt$t@XTW% 'Ƞ B.瀀XTW%'Ƞ B.瀀XTW& 'Ƞ B.瀀XTW&'Ƞ B.瀀XTW' 'Ƞ B.瀀XTW'Ƞ  B.瀀XTW PI@XTW@H$ 'Ƞ B.瀀XTWD@XTWD@XTWD@XTWD@XTWD@XTWD@XTW'Ƞ +LကXTW$@02!2D@XTW$D02!2@XTW$@02!2D@XTW$D02!2@XTW$@02!2D@XTW$D02!2@XTW'Ƞ +$L02!2XTW$@02!2@XTW(!$@02!2@XTW(!$@02!2@XTW(!$@02!2@XTW(!$@02!2@XTW(!$@02!2@XTW(!$@02!2@XTW'Ƞ + (!$@02!2XTW(!$@02!2@XTW$@T02 2#!2@XTW$DT02 2#!2@XTW$@T02 2#!2@XTW$DT02 2#!2@XTW$@T02 2#!2@XTW$DT02 2#!2@XTW'Ƞ +$LT02 2#!2XTW$@T02 2#!2@XTW2##?$@2# 2#D1!2@XTW2##?$@2# 2#D1!2@XTW2##?$@2# 2#D1!2@XTW2##?$@2# 2#D1!2@XTW2##?$@2# 2#D1!2@XTW2##?$@2# 2#D1!2@XTW'Ƞ + 2##?$@2# 2#D1!2XTW2##?$@2# 2#D1!2@XTW2@1@XTW2D1@XTW2@1@XTW2D1@XTW2@1@XTW2D1@XTW'Ƞ +2L1XTW2@1@XTW0@41@XTW0D41@XTW0@41@XTW0D41@XTW0@41@XTW0D41@XTW'Ƞ +0L41XTW@1@XTW0@1@XTW0D1@XTW0@1@XTW0D1@XTW0@1@XTW0D1@XTW'Ƞ +0L1XTW0@1@XTW$T02 2#!2@XTW$T02 2#!2@XTW$T02 2#!2@XTW$T02 2#!2@XTW$T02 2#!2@XTW$T02 2#!2@XTW'Ƞ +$ T02 2#!2XTW$T02 2#!2@XTWg XTW|Ě -,XȌ,Ȍ|ĊTXXTW XTW -XTWa XTW%|ĚL|Ċ --,Ȍ ,Q XTW$L02!2XTWI|ĚL|Ċ --,Ȍ ,Q  -XTWXTW@H|Ě -,Ȍ,Ȍ|Ċ -XTWXTWXTW I|ĚL|Ċ --,Ȍ ,Qf  -XTW (!$@02!2XTWI XTW|Ě -,hȌ,Ȍ|ĊdhXTWJ XTW XTW&|ĚL|Ċ --,Ȍ ,Q XTW$LT02 2#!2XTWIOhXTWXTW}XTW 2##?$@2# 2#D1!2XTWI& $ XTW|Ě -,xȌ,Ȍ|ĊtxXTW%( $ v뀀XTW'|ĚL|Ċ --,Ȍ ,Q XTW2L1XTWI |(!|02 "2XTW' -@XTWČ$  B.XTW0L41XTWI( LXTW|Ě -,Ȍ,HȌ|ĊL0P ;XTW%( oLကXTW@XTW  $|ĚL|Ċ --,Ȍ ,Q8 XTW0L1@XTWI0s|(!x02 "2XTW|t倀XTWČ +LXTW|Ě -,Ȍ,Ȍ|Ċ -H@H$ T02 2#!2XTWI80O- ģij,F.  !#RO/#>5:5`   h/<<3   4# R $# ,/  /"P" R" B4 4@ FxGQEĊQEĊ x ĊG @ĊQEOĊ$ P P@ $ @: $  vR $ $@ H  P  X ` @ I|ĚL|Ċ --,Ȍ ,Q  -XTWPFPFh>P01// \J" 3--:--. .:::::::.TA`AlAxAA:AAAAAAAAA:B B,B8BDBPB\B:::::::::BBBBBBBBBBBBBBBB@56d6677:477778::::::::::-::::::::::::::::::::::::::::::::::::::::: \(UWQL \UWQLRead from OAM. Wrote to OAM. \J2--:----:::::::-<@H@T@`@l@:x@@@@@@@@@:A AA$A0A  ˌ  ˌLT!L t >  ˌ  +xxxxSNtuuh>Ix^Z!`@@&9_9_9_9_`?DDDD@ D H L P T X T X  PO4OdO::::(;|;;;-<;:: v  (;=L<$<!Q@-U@ nO4rOP$ P$ P$ P$ P$ (;<<: 9: =0=:+ P CSv(;\=;;?(;=<:(;=::C9@-0<<<<8$@DA$HLI -$@DHL$T?99 0Px h8Tx0`|  P 8Lt@`4PhH 4 ` |       8 P l        4 P |        @ X t       $ @ X t       <X p0\(<Pdx @l4p$`(\$THH0Lh ,Hh(Dd0d<l (ldlBDTl$ X h P$     !(!d!!!!!0"X"""""#<#T#### $ $$$$:::::::(::::8 ;;D+(ใ(ใx[[_LOC[ $98[)TACK_PONTERorlater o "   *   *   A(A "   A(A *  de files are useable revisions. rev_Check_hardwarePff s nٙgcnܙ3>GB HiColƑ> <;>rͯ( aO@o@gV>OV!@O@G͛O!@O@G͛>̀!~w>0>MwD8>@! aACBJ>KOpV6#= !>6#= !Fw#x=G !|F>(= * x G@( D @x@D8AA>> "  = > /7G>/Gx>0>O!XY>!hw!D .AN .isrsrsrsrsrsrsrsrsrsrsrsrsrsrsrsrD !*fo********************************************************** mem_Set:: inc B.ski)TILE_LOCATION.skip dec c jr nz,.loop dec b jr nz,.loop ret ;*************************************************************************** ;* ;* mem_Copy - "Copy" a memory region ;* ;* input: ;* hl - pSource ;* de - pDest ;* bB****)SPR_LOCATION********************************************** mem_Copy:: inc b inc c jr .skip .loop ld a,[hl+] ld [de],a inc de .skip dec c jr nz,.loop dec b jr nz,.loop ret ;*********************************B****)MAP_LOCATION* mem_Copy - "Copy" a monochrome font from ROM to RAM ;* ;* input: ;* hl - pSource ;* de - pDest ;* bc - bytecount of Source ;* ;*************************************************************************** mem_CopyMono:: inc bBkip color.z80] ld [de],a inc de ld [de],a inc de .skip dec c jr nz,.loop dec b jr nz,.loop ret f&***ȹ Xcolor.z80******************************************* ;* ;* mem_SetVRAM - "Set" a memory region in VRAM ;* ;* input: ;* a - value ;* hl -s: ޹Xcolor.z80********************************************************************** mem_SetVRAM:: inc b inc c jr .skip .loop push {G ߹Ycolor.z80 pop af ld [hl+],a ei .skip dec c jr nz,.loop dec b jr nz,.loop ret ;*********U***߹0Zcolor.z80**************************** ;* ;* mem_CopyVRAM - "Copy" a memory region to or from VRAM ;* ;* input: ;* hl - pSource ;* de - pDf bc߹Zcolor.z80******************************************************************** mem_CopyVRAM:: inc b inc c jr .skip .loop di ktVR߹P_[ใa gใ dec )rP1(ใJ :JJJJB`к(ใ`:JJ J :J J :JPJXJ :JB )P1F_5JJ  @;JKB8Ϻ(ใ"J-J;JIJ  ;JpJJJJJJJJJJ Bغ)P1F_4 P<J`<JMB؉prVBKใpJxJ <JJJ =JJ 0=JB& color.z80JJ =JOB Hd](ใ@JKJ =J߹8` ).skipMEMORY1.z80 rNR34 EQU $FF1E rAUD3HI ldh a,[rSTAT] and STATF_LCD jr z,@-4 lTAT] ((ใ_nd STATF_LCD [a @߹ )CharLoop NR42 (ใ_UD4ENV EQU rNR42 A@E ).scfin  ).ScOff rNR42_2 EQU $FF22 rAUD4POLY EQU rNR42_2 rNR43 EQU $FF23 rAUD4GO EQU rNR43 a(繃 ).scfin ldh a,[rSTAT] and STATF_LCD jr z,@-4 ldh a,[rSTAT] and STATF_LCD $a(繃 )VBLANK 6 CAR( (ใ_ EQU 8 CART_ROM_RAM_BAT EQU 9 CART_ROM_256K EQU 0 CART_ROM_512K EQU 1 CART_ROM_1M EQU 2 CART_ROM_2M EQU 3 CART_ROM_4M EQU 4 CART_ROM_8M EQU 5 CART_ROM_16M EQU 6 CART_RAM_NONE EQU 0 CART_RA'Ah!AM_6).loop256K EQU 3 PADF_DOWN EQU $80 PADF_UP EQU $40 PADF3a깃$20 ).yloop $10 PADF_START EQU $08 PADF_SELECT EQU $04 PADF_B EQU $02 PADF_A EQU $01 PADB_DOWN EQU $7 PADB_UP EQU $6 PADB_LEFT EQU $5 PADB_RIGHT EQU $4 PADB_START EQU Max鹃hEQU ).xloop EQU $1 PADB_A EQU $0 SCRN_X EQU 160 Pax鹃[N_Y )_Pad_ SCRN_X_B EQU 20 SCRN_Y_B EQU 18 SCRN_VX EQU 256 SCRN_VY EQU 256 SCRN_VX_B EQU 32 AHƺ0 )spbak EQU 32 NINTENDO_LOGO: MACRO DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D DB $00,$A000,$)GBPalette1$DD,$D9,$99 DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E ENDM ENDC ؄JJ#J#J#JXJ舠J#J#J#J JJ#J#J#JPJJ#J#J#JJ8J#J#J#JXAphJ)_wait JXJ#J#J#JJhJ#J#J#JJxJ#J#J#JJJ#J#J#JJ#J#J#JJ#J#J#JJ#J#J#JȍJ#JAܺ#J,(ใJJ#J#J#JJJğJ"JJJ#J#J#JJЛJ#J#J#J JJ#J#J#JJJ#J#J#J $7 PADB_UP EQU $6 PADB_LEFT EQU $5 PADB_RIGHT EQU $4 PADB_START EQU $3 PADB_SELECT EQU $2 PADB_B EQU $1 PADB_A EQU $0 ;**********************0****).loop********* ;* ;* Screen related ;* ;*************************************************************************** SCRN_X EQU 160 ; Width of screen in pixels SCRN_Y EQU 144 ; Height of screen in pixels SCRN_X_B EQU 20 ; Width of screa@߹B ).skip screen in bytes SCRN_VX EQU 256 ; Virtual width of screen in pixels SCRN_VY EQU 256 ; Virtual height of screen in pixels SCRN_VX_B EQU 32 ; Virtual width of screen in bytes SCRN_VY_B EQU 32 ; Virtual height of screen in bytes NIa@߹ ;*)mem_CopyMonoogo ;* (Code won't work on a real GameBoy) ;* (if next six lines are altered.) DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99 DB $BB,$BB,$67,$63,$6E,$0EI`@߹,$9F).skip ENDM ENDC ;HARDWARE_INC ; -- AUD3LEN/NR31 ($FF1B) ; -- Sound length (R/W) ; -- ; -- Bit 7-0 - Sound length ; -- rNR31 EQU $FF1B rAUD3LEN EQU rNR31 ; -- ; -- AUD3LEVEL/NR32 ($FF1C) ; -- Select output level ; -- ; -- put ).loop 00: 0/1 (mute) ; -- 01: 1/1 ; -- 10: 1/2 ; -- 11: 1/4 ; -- rNR32 EQU $FF1C rAUD3LEVEL EQU rNR32 ; -- ; -- AUD3LOW/NR33 ($FF1D) ; -- Frequency lo (W) ; -- ; -- see AUD1LOW for info ; -- rNR33 EQU $FF1D raXH @߹ ;).skipR34 ($FF1E) ; -- Frequency hi (W) ; -- ; -- see AUD1HIGH for info ; -- rNR34 EQU $FF1E rAUD3HIGH EQU rNR34 ; -- ; -- AUD4LEN/NR41 ($FF20) ; -- Sound length (R/W) ; -- ; -- Bit 5-0 - Sound length data (# 0-63) ; -- rNR41 EQU $FF20 rAUD#aX @߹; --)mem_SetVRAM21) ; -- Envelope (R/W) ; -- ; -- see AUD1ENV for info ; -- rNR42 EQU $FF21 rAUD4ENV EQU rNR42 ; -- ; -- AUD4POLY/NR42 ($FF22) ; -- Polynomial counter (R/W) ; -- ; -- Bit 7-4 - Selection of the shi @(ใ_3 EQU $FF13 rAUD1LOW*I8ۻ@߹ ).skip rNR14 EQU $FF14 rAUD1HIGH EQU rNR14 p ).loop rNR21 EQU $FF16 rAUD2LEN EQU rNR21 .a@߹ ).skipMEMORY1.z80 rNR22 EQU $FF17 rAUD2ENV EQU rNR22 rNR23 EQU $FF18 rAUD2LOW EQU rNR23  (ใ_ ?a @߹$FF1)mem_CopyVRAM FI@߹ ).skip rNR30 EQU $FF1A rAUD3ENA EQU rNR30 rNR31 EQU $FF1B rAUD3LEN EQU rNR31  ).loop rNR32 EQU $FF1C rAUD3LEVEL EQU rNR32 rNR33 EQU $FF1D rAUD3LOW EQU rNR33 Ja @߹ X(ใA0 )SpriteRoutineEnd mem_SetVRAM:: inc b inc c jr .skip .loop push af di lcd_WaitVRAM pop af ldAϻ ei)init_RoutineLoopop dec b jr nz,.loop ret Aٺ )Wait mem_CopyVRAM:: inc b inc c jr .skip .loop di lcd_WaitVRAM ld a,[hl+] ld [de],a ei inc de .skip dec c jr nz,.loop dec b jr nz,.loop ret ENDC A )OAMF_PAL1 %00001000 STATF_LYCF EQU %00000100 STATF_HB EQU %00000000 STATF_VB EQU %00000001 STATF_OAM (MEMORY1_ASM STATF_LCD EQU %00000011 B color.z80 %00000010 rSCY EQU $FF42 *t  IF \1 > 1.1 WARN "Version \1 or later of 'memory1.asm' is required." ENDC EQU $F)rev_Check_memory1_asm rDMA EQU $FF46 @ ldh a,[rSTAT] and STATF_LCD jr z,@-4 ldh a,[rSTAT] and STATF_LCD jr nz,@-4 cy o)lcd_WaitVRAM polynomial counter (0000-1101) ; -- freqEQUdrf*1/2^scf (not sure) ; -- Bit 3 - Selection of the polynomial counter's step ; -- 0: 15 steps ; -- 1: 7 steps ; -- Bit 2-0 - Selection of the dividing rat)mem_Set f/4 001: f/8 010: f/16 011: f/24 ; -- 100: f/32 101: f/40 110: f/48 111: f/56 (fEQU4.194304 Mhz) ; -- rNR42_2 EQU $FF22 rAUD4POLY EQU rNR42_2 ; -- ; -- AUD4GO/NR43 ($FF23) ; -- (has wrong name and value (ff30) in Dr.Pan'sI86@߹it 7).skipt 6 - Counter/consecutive selection ; -- rNR43 EQU $FF23 rAUD4GO EQU rNR43 ; silly name! ;*************************************************************************** ;* ;* Cart related ;* ;*******************************************************).loop EQU 0 CART_ROM_MBC1 EQU 1 CART_ROM_MBC1_RAM EQU 2 CART_ROM_MBC1_RAM_BAT EQU 3 IF 1.5 > 1.9 a@߹1 or).skipinc' is required." ENDC ARTX"(ใ_QU 5 CART_ROM_16M EQU 6 CART_RAM_NONE EQU 0 CART_RAM_16K EQU 1 CART_RAM_64K EQU 2 CART_RAM_256K EQU 3 ;***************************************************************************a@߹ted )mem_Copy************************************************************ PADF_DOWN EQU $80 PADF_UP EQU $40 PADF_LEFT EQU $20 PADF_RIGHT EQU $10 PADF_START EQU $08 PADF_SELECT EQU $04 PADF_B I)@߹_A ).skip PADB_DOWN EQU xor a ld [rVBK],a ld [rSVB@VWXY??||??0pDTTVVTTV0 z័>1<3?3? ?7s@010,>>#><<????/a?????'4pwyp VtTtTP0<3><,< ?!ϰlg?t o@?c_??x<PB</x~3'|>?n-~?8yC >?#{gdsp= Fr 7?#p< p|730`?0~a??@`88||8'0? αOnÀ|$.ֻN32?>?{0|Oo~^>>.0?CKKC??03ps?>?a???` ?`_|cxG @9q0x8`W0~A?Oo/ l?_7ɟo;@4 Cbxi?????@1? ???>!8'Dg#7toH烂g?? >P]~u^]\[  `p@ |>pxx}? >>@?p100?@@r=4  p12p?| ?<<_9?0OȇȇKhgco1??CxX;{yF?hpp`? 'G8`?>??3"#$o\S |=FD q?`C{;ƾ@ʴKwvxc\c\||>?88{#  usfE~9|{~y>9>1?0>1!CK|`,8<~~+#x__ ||6}8w7<3&c# p.؜ ~~?03<|x`_b]pO|c'a?7k<# .L;3/o?G?Gw77pxS/? @?xHy?Nl\x>;577@p??_/{=0?|ze>!>!<;8m @0/1qࠠ@<p~1}|q00/?8p9<>>ܿ7;'/#?_go|pp7778787870 ?>y<?>Oo?'<7C8Ļƹ9? pO?_ ct?_xG0G8`00 ``AAA87po?0?0xdSAp 8@@??C?x X{??| ?XLJ?@pO`_@1(|~3xoo?~\#Ls x'EMZZy?a???? 0  w `?0?pf0    s;?=|? 8Mdڥyĵóf nn???AC8|x|0N0-?; s?s? <٦` ? w ~}??0|{?`0'8s|s8  @?88jUH㝼ý~~|pp~A@[gggg?ip8ǸG۾!11|3''|0ρ~s`_bA`?;?? @?????9ϛ 7 !<> <0 0c00g௜ 8# ~?D@>A5Y~;/! W4Ǹ?L@;600`?@??3 O' 0 ?89? 0/c<2v HfC gp4E īq?||>>??; {`;,g(GЄ`ĸ{p?\x|~`??       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~;_*  )- ) 9%&& n! +!m!*+*!B6&;[!( o&()'& io!%%.-%m!% ++!7>!( ok&'('' ! %%%) n!%,+K!W( &(&(.! %%) M!9% 9+!L!6!'-j&).!)%)%) L!) +K%l%L!& &jn!)! -) l%+-L!l%%m%& gMo!M! n! -l%1)5L!%m%l!.Fn ,of  l%-)---L!%)l%pG q#nhDN gF  )L1--1-L!)m%)p$iQ#-F# F.$F %---1-1l!)%-O p#F g##f #eD!- -111l%)m%-p. O #GEg#"E#f"BD% --111 m%)). pOE ge #!C#gCN- --11+m%))O pp!.%-d%B!E#Ggn---11L)%-O pq-%6--"0 "E*)",)-111l)-m% O P. -5%--e!1F!-fnf-111m%)-)P O!:-vFo!:"Q !/f!n#)--1m%)-n)/ O%:-UBN1 .r#.% $)--5EJ)/p)5--N1P! #O! g"m- C) .P %5>-"-1 !)QfN! f")L1E)1 -/1=p%"-1 - /,!-Eh"%- DI%)h . O%5 " N!p!1  %tV-Fi$n-1DK!%o) . 5-!"- p%.1 q%1-"hN!%1,"Fho) /p)1-#o)5 % -O6#go%"K-"F ho%. p)1O!#o% 1 0o%)Q1hOB 1f)5 -.p!)5.!#. - .%%%0-Oh)0>-/>9Q>g O!..q)D-!o)-o%>h%/- hOl%0>5>:/B )..p%-/e N%p!1,!q%-0 g.L%/>:/>/BOB q!.)P!)CO!1O!Z  P) OF!0BD>/>/B0B P!.q%0Q!CO!-)2F q!-/ Og!j%PF:0>0BPB ).-Q!r%0Cq%-Q! 1q%-/g-!-fPB:0BPB> r!1.r%-0C+ - Q!-)05E0BK>0B/>PB !1N->P!!N!5 q!.- %05fk%QF>0B/>PB q%1.%P!1!N!5dq!1r%01$gL!QFf>0>/>PB-)N!n%q%/O N1eC%6%P1E1B*f>PB/BPF )K!m%.)P!---f"%6 -p!1h "-1B>PB/BPF,)m%L! o%-NN!-f!p%- -)P5- "- QF>0BPF/>-M!%)5O!!N-f"O!- p!-) .o! #- 1B>PB/BPF-Mn% ) 1",-F"p%-%1. N %#) PB>PB/>QFM1%O6J% )h!.) )1N o!..$)PB>PBPF/>-%-M!R>o%#--! %o%)) Oo%o$0B />PF/BOB,m%L%Q%0-#N!)"- %N!% No!o%E1PF>0BPF/> %LN/p)1p%,)!o!DN% N%)o!f-PF>PB/B/>m!%-/p%O)L)"f.N!%-N!)%-fPFN>PB/BQF m!-) p%O)-)!- D .o%n!)-%gPBO>PF/BOBN% p%)1M:!-:D o!o%--)g) QF-/>QF6+/% 1n!9#1: %e1> o% )115m% 1%*>*/! o% 1" :g!1>d!N--613: %0> f%QB p! f o)#-1>"-RB "M15:64:Z%-+RF1R %F #N!1>D9 QBC 1n54::5>-QF)_5JV1> O% n!#%1>1>QFNRF"M1 64>4:5>-_)55N1>V % o-%1#)1>):QB6do!165:4::K!R1>6c1>rJRFN % %15)$%:10>QB5J%/F%1:csF4:QB_R6gQBNRrJ O!-o%5:-o%>10BrF:n%OFR-9Z7gsFrJZ7gRQBNrFR )o%15-&N1)0B6rJ=7gROF7g8gWg8kN[6cV1BJrFR O!-n%1-5n!15qJ>NPJcV7gV7gZ8gV_cZQBNrFR -o%5)1n%9+0BqFNVPJ7gRVZc7g^V_6cZQBJRrF -)51:n%0B 0BqNVPFPJcVqN^6c6gcVc[6crFRVJ -o-559o)1J,0BqNRQJqN7gRZ6cg7g6gZc[6cJRRV Q! -)5-9 - 0FNqNVqNZV7cc6g7g6cVc_6cRVZV ) NP!1) PFR qJZV^V6c_6gZc6c_RVZR' - )5')PJpNZVcN_6ccVc^6cNVRRd & MQ% (9-0FAZRcJ^6cVR_Z6crJRNVD  -. )-9B=Vc/JrJ_6cRR_6cZQFNrJRD -, -PJl-FVpRcJZRcV^_ZQFNNrJD  -, +, -=H5V/JcrJVZNVZ_Z1FrNrJR% - ,  , 9)(-pNcABVNZRZ^V1BrJNR  ,- , , ,%o /JH5^=RZqJRZV^0BrJNQF ) ,   SO%)1VH5=VqJbsNVRZ0BrJrNQF  +    2-s'5/F5rNANQJV0BqFQFrJ *  +  n 2%!R,-=qN55QJBR9QF/BQJ'() *  + 1 R)=&5k1FrN=k1>0B9- rNR22 EQU $FF17 rAUD2ENV EQU rNR22 rNR23 EQU $FF18 rAUD2LOW EQU rNR23  (ใ_ ?a @߹$FF1)mem_CopyVRAM FI@߹ ).skip rNR30 EQU $FF1A rAUD3ENA EQU rNR30 rNR31 EQU $FF1B rAUD3LEN EQU rNR31  ).loop rNR32 EQU $FF1C rAUD3LEVEL EQU rNR32 rNR33 EQU $FF1D rAUD3LOW EQU rNR33 Ja @߹ X(ใA0 )SpriteRoutineEnd mem_SetVRAM:: inc b inc c jr .skip .loop push af di lcd_WaitVRAM pop af ldAϻ ei)init_RoutineLoopop dec b jr nz,.loop ret Aٺ )Wait mem_CopyVRAM:: inc b inc c jr .skip .loop di lcd_WaitVRAM ld a,[hl+] ld [de],a ei inc de .skip dec c jr nz,.loop dec b jr nz,.loop ret ENDC A )OAMF_PAL1 %00001000 STATF_LYCF EQU %00000100 STATF_HB EQU %00000000 STATF_VB EQU %00000001 STATF_OAM (MEMORY1_ASM STATF_LCD EQU %00000011 B color.z80 %00000010 rSCY EQU $FF42 *t  IF \1 > 1.1 WARN "Version \1 or later of 'memory1.asm' is required." ENDC EQU $F)rev_Check_memory1_asm rDMA EQU $FF46 @ ldh a,[rSTAT] and STATF_LCD jr z,@-4 ldh a,[rSTAT] and STATF_LCD jr nz,@-4 cy o)lcd_WaitVRAM polynomial counter (0000-1101) ; -- freqEQUdrf*1/2^scf (not sure) ; -- Bit 3 - Selection of the polynomial counter's step ; -- 0: 15 steps ; -- 1: 7 steps ; -- Bit 2-0 - Selection of the dividing rat)mem_Set f/4 001: f/8 010: f/16 011: f/24 ; -- 100: f/32 101: f/40 110: f/48 111: f/56 (fEQU4.194304 Mhz) ; -- rNR42_2 EQU $FF22 rAUD4POLY EQU rNR42_2 ; -- ; -- AUD4GO/NR43 ($FF23) ; -- (has wrong name and value (ff30) in Dr.Pan'sI86@߹it 7).skipt 6 - Counter/consecutive selection ; -- rNR43 EQU $FF23 rAUD4GO EQU rNR43 ; silly name! ;*************************************************************************** ;* ;* Cart related ;* ;*******************************************************).loop EQU 0 CART_ROM_MBC1 EQU 1 CART_ROM_MBC1_RAM EQU 2 CART_ROM_MBC1_RAM_BAT EQU 3 IF 1.5 > 1.9 a@߹1 or).skipinc' is required." ENDC ARTX"(ใ_QU 5 CART_ROM_16M EQU 6 CART_RAM_NONE EQU 0 CART_RAM_16K EQU 1 CART_RAM_64K EQU 2 CART_RAM_256K EQU 3 ;***************************************************************************a@߹ted )mem_Copy************************************************************ PADF_DOWN EQU $80 PADF_UP EQU $40 PADF_LEFT EQU $20 PADF_RIGHT EQU $10 PADF_START EQU $08 PADF_SELECT EQU $04 PADF_B I)@߹_A ).skip PADB_DOWN EQU xor a ld [rVBK],a ld [rSVB