É�‚(�‚ÉM ret ÃeplayGameBeginÙ ÃÜ>ÀàF>(= ýÉõÅÕåÍ€ÿ>ê ÀáÑÁñÙDate 981017 " ü ùÉ * ú ÷É * ø õÉ  õóðAæ úñ"û ò ïÉ  óðAæ ú*û ò ïÉ ret GamÃ'ÎíffÌ sƒ ˆ‰ÜÌnæÝÝÙ™»»gcnìÌÝÜ™Ÿ»¹3>CHAPTER 4 LINK603¡én> àðð/æË7G>àðððððð/æ°Gú£À¨ ê¤Àxê£Àõ>0àú¤ÀGñɯê¥Àê§Àê©Àê À>à>€àÉ>à>�àÉú¥ÀþÈþȯÉú©ÀþÀ>�àÉú©Àþ( ú§À·(ú¯ê§ÀÉú À·(ú¯ê ÀÉõðê¥Àú©À· ðþ()þ(%¯ê¥À>à>€àú¦Ààú©Àþ( >€à>ê§ÀñÙîê©Àú¦Àà>€àñÙó1þÿÍÐÍQÍ0ÍŠû¯ê¡Àú¡À· ÍP·(Í >ê¡ÀÍ©· ÍÅáÍnÍPê¦ÀÍ´ÍrͱÍ¿ìú¥ÀG!¡Ëxæ͇ õÉÅÕ^#V#å ·(ðAæ úxáÑÁÉE™™$™&™¬™©™.™™ú¢À<æê¢ÀÀúÀ<æêÀÉú À·(ú¯ê ÀÉÍ5![€ÿ Í�!À ¯Í�!þ ¯Í�>êÀ>êÀ>êÀ>êÀ> àÿ¯àCàB>äàGàHàI!�€Í›!˜> Í�É>“à@Éð@ËÈðÿõˇàÿðDþ‘ úð@Ë¿à@ñàÿÉ!…d˜ Í�ÍaÉ!�à˜ÍÁÉ!{¤˜ ÍÁÉGame BeginPress Start ÉÍ» ÉÍ» xxxxxxxxxxxx ɼ È» ÉÍ»º º xxxxxxxxxxxx º º º ºÈͼ xxxxxxxxxxxx È» ɼ Èͼ xxxxxxxxxxxx Èͼ xxxxxxxxxxxx ÉÍ»ÉÍ» xxxxxxxxxxxx º ºº º xxxxxxxxxxxx ÈͼÈͼ xxxxxxxxxxxx~BBBBBB~~�¥�½™�~~ÿÛÿÃçÿ~lþþþ|88|þ|88|8þþ|8|8|þ|8|<<ÿÿçÃÃçÿÿþ><~~<ffffffÛÛ{>c8ll8Ìx~~~<~~<ÿ<~~< þ 0`þ`0ÀÀÀþ$fÿf$<~ÿÿÿÿ~<000000lllllþlþll0|Àx ø0ÆÌ0fÆ8l8vÜÌv``À0```0`00`f<ÿÌÌÌüÌÌÌx00000x ÌÌxæflxlfæ``````~ÆîþþÖÆÆÆæöÞÎÆÆ8lÆÆÆl8üff|``ðxÌÌÌÜxüff|lfæxÌàxÌxü000000ÌÌÌÌÌÌüÌÌÌÌÌx0ÆÆÆÖþîÆÆÆl88lÆÌÌÌx00xþ 0`þx`````xÀ`0 xx8lÆÿ00x |Ìvà``|ffÜxÌÀÌx |ÌÌvxÌüÀx8l`ð``ðvÌÌ| øà`lvffæ0p000x ÌÌxà`flxlæp00000xÌþþÖÆøÌÌÌÌxÌÌÌxÜff|`ðvÌÌ| Üvf`ð|Àx ø0|004ÌÌÌÌvÌÌÌx0ÆÖþþlÆl8lÆÌÌÌ| øü˜0dü00à00à0000àvÜ8lÆþP�œð�ž(xÌÌÌx(xÌÌÌx xÌÌÌx(ÌÌÌÌv ÌÌÌÌv(ÌÌÌ| ø(|ÆÆÆÆ|(ÆÆÆÆÆ|xÌÀÌx8D@ð@@þÃf<~~üff|``ð0ü0000àx |Ìv p000x xÌÌÌx ÌÌÌÌv2LøÌÌÌÌ2LÆæÖÎÆ8 DD8ÌDDDz@||’’||‚º‚||‚‚l(î| 8DD8l’’lL’’|<@0@< 1.1 WARN "Version \1 or later of 'memory1.asm' is required." ENDC ELSE ‰ ldh a,[rSTAT] and STATF_BUSY jr nz,@-4 )KEYPAD_ASMc:\A\GB\include\memory1.asm\2",2,1) 3ª[s2 ø ä£�‚¼ÿ�‚,a ld a,__s1 ld [\1+1],a PURGE __s1,__s2 ®ª[E ; LD16r Addr,p ä£�‚¼ÿ�‚ ld a,[\2]D [\ IF \1 > 1.2 WARN "Version \1 or later of 'keypad.asm' is required." ENDC ±c:\A\GB\include\keypad.asm\keypad.asm6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E Èä£�‚¼ÿ�‚> 8 pop hl ENDA$d16a�‚èê�‚±c:\A\GB\include\keypad.asmª[it immediate VALHä£�‚¼ÿ�‚ at ADDR. ld16ir: MACRO ld a,(\2) & $ff ld [\1],a D) x�‚˜ë�‚±c:\A\GB\include\keypad.asm ENDM ;* ld16irr ADDR,VALUE - 8 bytes, 44 cycles ;* Store 16-bit immediate VALUE to memory at ADDR. ld16irrF- è£�‚Hì�‚±c:\A\GB\include\keypad.asm2) & $ff IF 1.5 > 1L5 ø£�‚)SLAVE_CODEh a,[rSTAT] and STATF_BUSY jr nz,@-4 ;èä£�‚¼ÿ�‚DDR2 - 10 bytes, 68 cycles ;* ld16 ADDR1,RP2 - 10 bytes, 68 cycles ;* ld16 ADDR1,ADDR2 - 14 bytes, 92 cycles ;* Br hl)MASTER_CODE-bit contents of RP2 (bc,de, or hl) or ADDR2. ld16: MACRO __p1 EQUS STRLWR("\1") __p2 EQUS STRLWR("\2") IF (STRCMP("{__p1}","bc")==0) || (STRCMP("{__p1}","de")==0) || (STRCMP("{__p1}","hl")==0) ; LD16 rp,? __d1 B,1,1)SLAVE_INITUB("\1",2,1) IF (STRCMP("{__p2}","bc")==0) || (STRCMP("{__p2}","de")==0) || (STRCMP("{__p2}","hl")==0) ; LD16 rp,rp __s1 EQUS STRSUB("\2",1,1) __s push hl ld b,32 or a jr z,.wait ld b,0 .wait: ldh a,[$41] and 2 jr nz,.wait ld a,b ld [de],a pop hl pop de pop bc ret AddrList: dw $9800+5+(32*10) dw $9800+5+(32*8) dw $9800+4+(32*9) dw $9800+6+(32*9) dw $9800+12+(32*13) dw $9800+9+(32*13) dw $9800+14+(32*9) dw $9800+17+(32*8) MoveSprite: ld a,[Counter] inc a and $7 ld [Counter],a ret nz ld a,[SpriteTab+1] inc a and $7f ld [SpriteTab+1],a ret WaitForVBlank: ld a,[VBlankDone] or a jr z,WaitForVBlank xor a ld [VBlankDone],a ret Initialize: call ScreenOff ld hl,VBlankFirst ld de,SpriteDMA ld bc,VBlankLast-VBlankFirst call mem_Copy ld hl,SpriteTab ld bc,4*40 xor a call mem_Set ld hl,$fe00 ld bc,4*40 xor a call mem_Set ld a,16+4 ld [SpriteTab+0],a ld a,8 ld [SpriteTab+1],a ld a,1 ld [SpriteTab+2],a ld a,0 ld [SpriteTab+3],a ld a,IEF_SERIAL + IEF_VBLANK ldh [rIE],a xor a ldh [rSCX],a ldh [rSCY],a ld a,$e4 ldh [rBGP],a ldh [rOBP0],a ldh [rOBP1],a ld hl,CharSet ld de,_VRAM ld bc,256*8 call mem_CopyMono ld hl,_SCRN0 ld bc,32*32 ld a,32 call mem_Set ret ScreenOn: ld a,LCDCF_ON|LCDCF_BG8000|LCDCF_BG9800|LCDCF_BGON|LCDCF_OBJ8|LCDCF_OBJON ldh [rLCDC],a ret ScreenOff: ldh a,[rLCDC] bit 7,a ret z ldh a,[rIE] push af res 0,a ldh [rIE],a .wait: ldh a,[rLY] cp 145 jr nz,.wait ldh a,[rLCDC] res 7,a ldh [rLCDC],a pop af ldh [rIE],a ret DisplayPressStart: ld hl,PressStart ld de,_SCRN0+4+(32*3) ld bc,11 call mem_Copy call DrawOutlines ret DrawOutlines: ld hl,Outlines ld de,_SCRN0+(32*7) ld bc,8*32 call mem_CopyVRAM ret DisplayGameBegin: ld hl,GameBegin ld de,_SCRN0 + 4 + (32*5) ld bc,10 call mem_CopyVRAM ret GameBegin: DB "Game Begin" PressStart: DB "Press Start" Outlines: DB " ",$c9,$cd,$bb," ",$c9,$cd,$bb," xxxxxxxxxxxx" DB " ",$c9,$bc,32,$c8,$bb," ",$c9,$cd,$bb,$ba,32,$ba," xxxxxxxxxxxx" DB " ",$ba," ",$ba," ",$ba,32,$ba,$c8,$cd,$bc," xxxxxxxxxxxx" DB " ",$c8,$bb,32,$c9,$bc," ",$c8,$cd,$bc," xxxxxxxxxxxx" DB " ",$c8,$cd,$bc," xxxxxxxxxxxx" DB " ",$c9,$cd,$bb,$c9,$cd,$bb," xxx(�‚(�‚|| (STRCMP("{__p2}","de")==0) || (STÿBÐü�‚=0) i push af ld a,\2 ld [\1],a pop af __d2,__ �c�‚0å�‚(�‚ ´Q�‚b�‚d�‚GE  •�‚h�‚��‚(�‚d�‚  IF \1 > 1.1 WARN "Version \1 or later of 'memory1.asm' is required." ENDC p2}","b Ì`�‚f�‚2}","de"‰ ldh a,[rSTAT] and STATF_BUSY jr nz,@-4 pMemory1 Code )_VRAM�‚_INC€Bˆ¨’‚ñ IF \1 > 1.8 WARN "Version \1 or later of 'hardware.inc' is required." ENDC )rev_Check_hardware_incÀÀt�‚èd�‚b�‚(�‚ ld bc,8*32 call mem_CopyVRAM ret ; *** Display 'Game Begin' message *** DisplayGameBegin: ld hl,GameBegin ld de,_SCRN0 + 4 + (32*5) ld bc,10 call mem_CopyVRAM ; Display 'Game Begin' msg ret GameBegin: DB "Game Begin" PressStart: DB "Press Start" ; *** Virtual buttons map *** Outlines: DB " ",$c9,$cd,$bb," ",$c9,$cd,$bb," xxxxxxxxxxxx" DB " ",$c9,$bc,32,$c8,$bb," ",$c9,$cd,$bb,$ba,32,$ba," xxxxxxxxxxxx" DB " ",$ba," ",$ba," ",$ba,32,$ba,$c8,$cd,$bc," xxxxxxxxxxxx" DB " ",$c8,$bb,32,$c9,$bc," ",$c8,$cd,$bc," xxxxxxxxxxxx" DB " ",$c8,$cd,$bc," xxxxxxxxxxxx" DB " ",$c9,$cd,$bb,$c9,$cd,$bb," xxxxxxxxxxxx" DB