( )( ) ) EQ )_LOC @/)) ))TACK_PONTERorlater o "   *   *   A(A "   A(A *  de files are useable revisions. rev_Check_hardwarePff s nٙgcnܙ3>GB HiColK> <;>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&***HЂ )color.z80******************************************* ;* ;* mem_SetVRAM - "Set" a memory region in VRAM ;* ;* input: ;* a - value ;* hl -s: PЂИ)color.z80********************************************************************** mem_SetVRAM:: inc b inc c jr .skip .loop push {G `Ђ)color.z80 pop af ld [hl+],a ei .skip dec c jr nz,.loop dec b jr nz,.loop ret ;*********U***Ђ0)color.z80**************************** ;* ;* mem_CopyVRAM - "Copy" a memory region to or from VRAM ;* ;* input: ;* hl - pSource ;* de - pDf bc))color.z80******************************************************************** mem_CopyVRAM:: inc b inc c jr .skip .loop di ktVR)P)h0))  xZ)إ) ) dec )P1F_5)KB*_)( ) B*)P1F_4)MB)rVBK )Bd*)P1F_3)OB)p<)( )B *color.z80QB)H)( )@@@@@@@@@0)8) ).skip)MEMORY1.z80 rNR34 EQU $FF1E rAUD3HI ldh a,[rSTAT] and STATF_LCD jr z,@-4 lTAT] (( ))nd STATF_LCD [aL)*Ђ )CharLoop NR42 ( ))UD4ENV EQU rNR42 A*(Ђ ).scfin T) ).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'A@`*(ЂAM_6).loop)256K EQU 3 PADF_DOWN EQU $80 PADF_UP EQU $40 PADF3a*)p)(Ђ$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))@)(ЂEQU ).xloop EQU $1 PADB_A EQU $0 SCRN_X EQU 160 Pax))3)(Ђ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 A *`Ђ )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,$A`Ђ00,$)GBPalette1$DD,$D9,$99 DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E ENDM ENDC @@@@@@@@@@@@@@@@@@@@@XAЂЂ@)_wait)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A*(Ђ@,3)( )@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ $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 ;**********************0B)****).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>)E)Ђ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>)D)Ђ ;*)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`R)Ђ,$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 ; -- ; -- F)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 raXC)HJ)Ђ ;).skip)R34 ($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#aXC) I)Ђ; --)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*I+Ђ ).skip) rNR14 EQU $FF14 rAUD1HIGH EQU rNR14 pK) ).loop) rNR21 EQU $FF16 rAUD2LEN EQU rNR21 .aG)N)Ђ ).skip)MEMORY1.z80 rNR22 EQU $FF17 rAUD2ENV EQU rNR22 rNR23 EQU $FF18 rAUD2LOW EQU rNR23  ( )) ?aG)M)Ђ$FF1)mem_CopyVRAM FI2)Ђ ).skip) rNR30 EQU $FF1A rAUD3ENA EQU rNR30 rNR31 EQU $FF1B rAUD3LEN EQU rNR31 P) ).loop) rNR32 EQU $FF1C rAUD3LEVEL EQU rNR32 rNR33 EQU $FF1D rAUD3LOW EQU rNR33 JaL)W)Ђ X( )A)(Ђ )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*(Ђ )WaitQ) 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Ђ(Ђ )rP1ԛ)QU %00001000 STATF_LYCF EQU %00000100 STATF_HB EQU %00000000 STATF_VB EQU %00000001 STATF_OAM (MEMORY1_ASM STATF_LCD EQU %00000011 Bh) color.z80 %00000010 rSCY EQU $FF42 *Ђ  IF \1 > 1.1 WARN "Version \1 or later of 'memory1.asm' is required." ENDC EQU $F)rev_Check_memory1_asm rDMA EQU $FF46 )5) 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>)7))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'sIu*Ђit 7).skip)t 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:)A)Ђ1 or).skip)inc' 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 IXh*Ђ_A ).skip) PADB_DOWN EQU xor a ld [rVBK],a ld [rSVB@VWXY'$|lm4'7bĢĢ"DDiH]s3p1cTWe0wo@?:<:>/?? /p/??;}  !qR. ~B6  ._ v`x|&93Gs{qY ?ȷo!}Ϡ``###m,$`xֿ^@@#A }|Ew YN?1xpǟGg?~%[?~0}n}7$Ԃ@@/-T/'//0wc s3]x BOW9Xumxp r8`C:va#@gB%sͯ@b 4!!1pefBĦ+$571Crq#K8g@g@MJF^>7)rY<ߨ HI %ʻhDz:ˣw!~O/e/00 ??? _? ??#{{w8|fv<B?m=3wx?? źϱ:} dvvdX>e !#"=1}m|d_G@@I􊚨85<<+t |G~F,qQSqsy yj8KK:ܔ!kM g >, ߳6#Zxby{z" >4u' GGC "A?D@>@DŽC3ט/~/<3px  A@l'N  hacAcgOLt*^TppKI@@@@ d C KH pζ~W7b9&%G0g@<0974>POcG!3Ѓ0=l @D"Afp !  3sB 3{u3m%S- ui$0<n`0@`l+@dC%NB@W6& iu'c@K5X ?*DID ?" x<>/8~$²H0[<??4?dIFD.GȯaR yk~[oqi}:0!aciv?``g-NZzOkx&;~>.O$tBn8s</ 6;5OļO1,;;$(` |b18 R  X@h@@?DD(O__ vt9wX ^];0 m%8>4\>, "Gd77yH!7l''~e#?Vy >ufH\N@O0x!l8:=X9q`  agO@/pP&C0WoA^S@ջxc/w'?=#?:B?' cn.߿ ̴R V 00=~W'`PQ  {nܐތ@@*C|x}n]'=`6v00#?p8W lo3n'ps?_`Ե4=>??P@? 3 ,9 vܛG<8p8ԘTD4;}d<?D~HH!?9mc0Ac{j`A ߞ}?֘ l  ??CoxgU!a`Џ! hLL! ׵r;Գ]}_t~>.?8?@s}}F $O<zw u8!ޟ9`AAw8Y 3V|| !A3[ H\@bJ~!00 ȇv \ {8þ`,>/\@$6vjB 3?M@87b6`qp0 T7??@@`;?B"J_s꽽n`ӆ7!ɀ@' _Mol2 pd m @t99 |~nXxd '%=.F<GF3I _ j( ܠP2ae#KE؀|v!u2 d 8 Ae$y''Rw< FZ|<7,1xo@ǡb   ? ]؀wWS߀NVZP o_tCoGp)^pOO3A@|!C@! h~2Ekfo? !'G1=8( /+:}lLv0x؄k ӂ^ h2!_\ \B[rA,`90_'`5g#p2!aYJC1{@XDs P<`p4S"x%5 `BB@@Ao3_ww`o w]nV*'97Rmc %y p;g4,g, 0%cyÒ&Gx 4/mUn?;{t>!g R%~pdoþ0e>vo w+ļD21fbH@n־h` ~DD=LnЫG /^W|>U<2<94KB ??jNOC߿"nB/       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~5()MVI-6E)>AI5BVIE^g6krZXofsZzsopN{7g^9()pNi5^'-H5II-R JpV/NfEfkzwqN7gfsVywj{rNzobOJ'%ZWH-Eh9h1IA.NEbONPZEkyooRpRkw^RYsfPJ{Zg5H%pJ=E%g=NRAIIVNRfEgs^ONo{^Rzwk0Fy{fd 5V9E(1i5.NEL^IMf^.NAZyogN7k{ZVzsoPJ8oj{J-c=% J%MA.RE/R^LZAV7kf/J5kw^rVzs^AkZwJ1Y_d9.F!!MANNA.NM^r^ERXkf/Ngs{PN7k{Z.J7o^{9sH)i1=AG)-NAONj5 Job9AbxsKfIfwPRrRYsf9k.R{6K-9IJ%'!.JAQNi5EPV=5f6gw9Z JkrNYoZ18o JqVP>-XG!qJc55I/NRJ5E.NM5b4kYs9j/NsqJgZw1ZXs/FqBI%WSA-F5I/JQJi5 F9JA^5ojj1Zw FrRkZ{5PNgo^5W-_WAI)50FIrJH1E.J9ApRfVi-b FXo5oVwH%ORo9 1N!(!c=J-I0J9H-ION5i5ORVjI-VJk=6kPNVI%PNfA/:7[H%!5?II-QFE-()=5I=Z.Nk1Z/N7sAgqRwH-.Rf=PBoH%E>I%I-=QFM)ENh5h1NNZA1.REf=7kPNZI)M^^50:j)W=R:J%k1IPR9H)EJ5h5MNEI9gINN9^OJzs(!IO^NNq>j)X_5I)N1E9IH-9IE9MNRE5pNAbi5rZEs'! JM^5pF(%{o1E'1A5IH)=Eh19NNEW1PNAf5V FgEO^H-.>'%5M)!i)5Ai5')Ah1J5ONA_j1J=o^'%0NW1=-V)%G)99C.J)k991'-=j-i9H-A9 JJ) J9PRIci-=H-,^R>&!z_-6(!J)0:k55&-==I)')9PNA)%EZ5'%Av[i-i-A5rJ&!w[%='!j)1/6l9')AFj)H-=QF9!9I-/J!=H)RFi5E'%!G%S2%9I--5l5')Ig5/FH1N=9()=i1-J1!')i1A'!&&%(!s25:;I)l55j1').i1A)R9i11A'%&-j-!9N()G!(%215I%15k)%9i)P>G-0J9R =9')!.BG-^ h1=!&!=j-Q:J)51)'%/J-7W()/BV9% B1RFF-!=h-Q&!-Q:))i)12-%*()I)%Fi57O!AH-pR![-')i-=E'!'%B5>!11k)'!')i-J!=pJG-%h1I'-'%g)&-h1qFA:'!-=j-j)51P:!I!)H)&)Ah1N!9H))!')G1!Fh-9 -1I)B(!1-0: '%'-9%h19'-()5'-=!')-(!%=Sg-(!j)).(!)12H)%'-g1(%%i11G-(-9h1BH)g1'%!qJ1k'!)'6-J%!-1H)%-G- ')19I-H)AH15G15'%qJ'%h1 !i)%1j-P>'%1j)Q6%'-G)&1')1i-FH-95.:H)g1!3Sh5!i).2dI-5!()1-r6!')'-g1'%g)'-1H)-H1/:H)g1%5'% F XW-I)QB1 -06I)'%i--'-%'-G%f-(!H)1h-f1()h-A')_11H%F-i)2)-G-1"%'-!'-h1'%'--I)-'%RF-g=I)1r2I%'%1Q6-')1c'))%&1-G)1&)&i1Bc-j-QJ!)-())%r61> !:'-)H-(!&)1H-&! FkI%j-QB!!1I)5!/>1J!%PJI)G15'%&)g-1dF)N1c9H)F!I)1-5i-qF!1!h1'%= Bf-%!F)8[1'!=9KI-!9-/B%=Zj-Q.(!87')h1&1H)9G)I'!  PBX_i)=JI)i19')!-16I)5'%N')g-&-h5!1 J')&! f0B-W1.F99Nj)J%')i-c'%H-'%'-f-h1G-i1'%&! /Bj-V!_=j-!/>5rF I%!i1 k!'-'%g-&-i1F-1'%& G%P>j-7SVi-91RPF8_5>j) ')1'%-G-9')h1!G%qFX[)!Vk=.J[kN8_BqF5i%qN&-g-()1i5'%02I%Y7qB1c'%No/BN[c7SkJPB_V9)F)1F1&%'-%/6_:/>6S-&!S/:oj-cqF9*5qB- =Oj'%f-'-h-F- !'!-.!oB JcH%FzWh)k)0>7S5Jc1 [G-k!&-1h1e)'!')!1)5N'!pB_'%-0B5JB96[pFB()g1%f-I-1%!G%!)(H%5H%JBcF)!91.J!9%:"'% H-'-%G%%'%!-h)G!5!FQ2)F9i-N!f-H%'-B'% 2!1&)F)G-A'%-2i%N1'!N6_j%'!25;%G-I)G% '%9qR'%9 Bi1!-J1V1g-p6-(!WSx[/2['!61Z3'G-5'% /BV'%.B7[Rw%-J5R)6G%J-8[qBzSI%H)r2O%'%'-G%g- qFH![BNJ_oJ55SFG)'!1(!qFI%1(%:-_!&-))h- Q:7Sk).:4Oq>F!-FNg1G!H-.:(![-(!F(nB-O%5-Fi) q>6O[-F=z_&%51P>=&%G-N6)SI!1P>XWi)56SOFrBrByWJ(!P:J)f-&)-!f-9!-B(!d 5O0>O16NqFYS1>!):I%!%)f-')G%!1.:)7W J-0:OJ!1q>JrF:j)''%'!%)g)')!F)'!.6(!Bj!B1qB)J)6r>-j)6'%'i5&!&-+2g-&%-:VI%)J!/:)QBI)J!5BJ'!J)&)!f-&$)%0>j)Yc I%:H!6j%H%-J%5%G) &%j)1BJ!1Fd (!! J))k)6>-'%h1!'!')=H%R >WG)1k)>j)/6Q:-i-'%!9&)QF)yo1*I2d%-((!J%q:1Oi)6N)5'!G)G%!-1J'!d)2 j)6)!6q>)KP:B-I%5:KG)-6!&!G-9I%Rd*%/6J!B-Op>w-Q>K/6j)0:F11'!MJ1!!9I!rJd  J)1>J%/2KWB-q:OO6-q>K>1i-pF!H%c1/>d J!K!q>J1!q>J1k%q:1J-KB_I%WrF{8gw{=I% 9+)BW06-rFP6NK!0:B11Fr>6O-Ss0B9c{RJ&)- l!2 >2G!F[P61J>WS/6F6SrBBg6S!ZkV- rNR22 EQU $FF17 rAUD2ENV EQU rNR22 rNR23 EQU $FF18 rAUD2LOW EQU rNR23  ( )) ?aG)M)Ђ$FF1)mem_CopyVRAM FI2)Ђ ).skip) rNR30 EQU $FF1A rAUD3ENA EQU rNR30 rNR31 EQU $FF1B rAUD3LEN EQU rNR31 P) ).loop) rNR32 EQU $FF1C rAUD3LEVEL EQU rNR32 rNR33 EQU $FF1D rAUD3LOW EQU rNR33 JaL)W)Ђ X( )A)(Ђ )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*(Ђ )WaitQ) 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Ђ(Ђ )rP1ԛ)QU %00001000 STATF_LYCF EQU %00000100 STATF_HB EQU %00000000 STATF_VB EQU %00000001 STATF_OAM (MEMORY1_ASM STATF_LCD EQU %00000011 Bh) color.z80 %00000010 rSCY EQU $FF42 *Ђ  IF \1 > 1.1 WARN "Version \1 or later of 'memory1.asm' is required." ENDC EQU $F)rev_Check_memory1_asm rDMA EQU $FF46 )5) 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>)7))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'sIu*Ђit 7).skip)t 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:)A)Ђ1 or).skip)inc' 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 IXh*Ђ_A ).skip) PADB_DOWN EQU xor a ld [rVBK],a ld [rSVB