diff --git a/.gitignore b/.gitignore index 8889572..7025503 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ **/*.lst **/*.map +**/*.o \ No newline at end of file diff --git a/COMPILING.txt b/COMPILING.txt index f492c38..31ecabf 100644 --- a/COMPILING.txt +++ b/COMPILING.txt @@ -3,16 +3,12 @@ This uses a very old version of the Gameboy Development Kit (GBDK) which has som WINDOWS: Copy the "sdk" branch to the root of a main drive (e.g. C:\sdk, D:\sdk, etc) -cd /d c:\sdk\gbz80-gb\2-1-5\lib -make cd /d c:\sdk\gbz80-gb\2-1-5\examples\u3 make LINUX: Copy/symlink the "sdk" branch to root directory, then: -cd /sdk/gbz80-gb/2-1-5/lib -wine cmd /c make.bat cd /sdk/gbz80-gb/2-1-5/examples/u3 wine cmd /c make.bat diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/battle2.c b/sdk/gbz80-gb/2-1-5/examples/u3/battle2.c index dd5a6cd..b7116ce 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/battle2.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/battle2.c @@ -901,7 +901,7 @@ void dostats(UBYTE which) UBYTE currsel,nextptr ; unsigned char *vidbase2 ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase2 = (unsigned char*)0x9800 ; else vidbase2 = (unsigned char*)0x9C00 ; @@ -1021,9 +1021,9 @@ void dostats(UBYTE which) enable_interrupts2() ; if ( vidbase2==(unsigned char*)0x09800 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF waitpadup() ; while ( done==0 ) @@ -1207,7 +1207,7 @@ void dostats(UBYTE which) VBK_REG=1 ; set_data2(vidbase2,(unsigned char*)0x9C00,0x400) ; VBK_REG=0 ; - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } else { @@ -1215,7 +1215,7 @@ void dostats(UBYTE which) VBK_REG=1 ; set_data2(vidbase2,(unsigned char*)0x9800,0x400) ; VBK_REG=0 ; - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF } enable_interrupts2() ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/cheat.c b/sdk/gbz80-gb/2-1-5/examples/u3/cheat.c index dd2c046..e75b19c 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/cheat.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/cheat.c @@ -385,7 +385,7 @@ UBYTE getmenuselection26(UBYTE numlines,unsigned char *menudata, void (*descptr) UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/demonfrm.c b/sdk/gbz80-gb/2-1-5/examples/u3/demonfrm.c index bd1d4bd..415a4aa 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/demonfrm.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/demonfrm.c @@ -1801,7 +1801,7 @@ void demon_animate() VBK_REG=1 ; set_bkg_data2( 0, 156U, demonframes[0] ); - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; @@ -1849,7 +1849,7 @@ void demon_animate() - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 156U, demonframes[dlcv] ); @@ -1911,17 +1911,23 @@ void demon_animate() */ VBK_REG = 0; // select palette bank + #ifdef ANALOGUE_POCKET + while ( LY_REG != 143U ) +// while ( (LCDC_REG & 0x80) != 0x80 ) + ; //empty loop + #else while ( LY_REG != 143U ) // while ( (LCDC_REG & 0x01) != 0x01 ) ; //empty loop + #endif set_bkg_palette( 0, 8, demonpals[dlcv] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF @@ -1930,10 +1936,10 @@ void demon_animate() //delay(10) ; /* - if (LCDC_REG&0x08) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if (LCDC_REG&VIDEO_BUFFER_SECONDARY) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF */ //enable_interrupts2() ; // waitpad(J_START) ; @@ -1952,7 +1958,7 @@ void demon_animate() - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 156U, demonframes[dlcv] ); @@ -1996,16 +2002,22 @@ void demon_animate() VBK_REG = 0; // select palette bank + #ifdef ANALOGUE_POCKET + while ( LY_REG != 143U ) +// while ( (LCDC_REG&0x80) != 0x80 ) + ; //empty loop + #else while ( LY_REG != 143U ) // while ( (LCDC_REG&0x01) != 0x01 ) ; //empty loop + #endif set_bkg_palette( 0, 8, demonpals[dlcv] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF @@ -2014,10 +2026,10 @@ void demon_animate() //delay(10) ; /* - if (LCDC_REG&0x08) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if (LCDC_REG&VIDEO_BUFFER_SECONDARY) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF */ //enable_interrupts2() ; // waitpad(J_START) ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/dungfun2.c b/sdk/gbz80-gb/2-1-5/examples/u3/dungfun2.c index eb2f648..ebc972a 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/dungfun2.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/dungfun2.c @@ -378,7 +378,7 @@ UBYTE dopeergem2(UBYTE spell) waitpadup() ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; } @@ -426,19 +426,19 @@ UBYTE dopeergem2(UBYTE spell) } for ( p=9; p<38 ; p++ ) move_sprite(p,0,0) ; - if ( LCDC_REG & 0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG & VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF waitpad(0xFF) ; waitpadup() ; - if ( LCDC_REG & 0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG & VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF return 1 ; @@ -451,7 +451,7 @@ UBYTE getmenuselection6(UBYTE numlines,unsigned char *menudata, void (*descptr)( UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/dungfunc.c b/sdk/gbz80-gb/2-1-5/examples/u3/dungfunc.c index b12ac0f..6738460 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/dungfunc.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/dungfunc.c @@ -603,7 +603,7 @@ void update_screen_dungeon(UBYTE dofunctions) - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,0x400UL) ; @@ -734,10 +734,10 @@ void update_screen_dungeon(UBYTE dofunctions) { writegamemessage(darkdat) ; } - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF return ; } @@ -1165,10 +1165,10 @@ void update_screen_dungeon(UBYTE dofunctions) } } - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF if ( dofunctions != 0 ) { @@ -1243,7 +1243,7 @@ void update_screen_dungeon(UBYTE dofunctions) if ( currdungtile==2 ) //fountain { changemusic = 3 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,0x400L) ; else set_data2((unsigned char*)0x9C00,(unsigned char*)0x9800,0x400L) ; @@ -1317,7 +1317,7 @@ void update_screen_dungeon(UBYTE dofunctions) for ( r=0 ; r!=11 ; r++ ) set_bkg_tiles2(1,1+r,11,1,metile) ; VBK_REG=0 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) set_data2((unsigned char*)0x9C00,(unsigned char*)0x9800,12L*32L) ; else set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,12L*32L) ; @@ -1329,7 +1329,7 @@ void update_screen_dungeon(UBYTE dofunctions) if ( currdungtile==5 ) //mark { changemusic = 3 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,0x400L) ; else set_data2((unsigned char*)0x9C00,(unsigned char*)0x9800,0x400L) ; @@ -1394,7 +1394,7 @@ void update_screen_dungeon(UBYTE dofunctions) VBK_REG=1 ; set_bkg_tiles2(6,6,1,1,metile) ; VBK_REG=0 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) set_data2((unsigned char*)0x9C00,(unsigned char*)0x9800,12L*32L) ; else set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,12L*32L) ; @@ -1407,7 +1407,7 @@ void update_screen_dungeon(UBYTE dofunctions) if ( currdungtile==1 ) //time lord { changemusic = 3 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,0x400L) ; else set_data2((unsigned char*)0x9C00,(unsigned char*)0x9800,0x400L) ; @@ -1486,7 +1486,7 @@ void update_screen_dungeon(UBYTE dofunctions) VBK_REG=0 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) set_data2((unsigned char*)0x9C00,(unsigned char*)0x9800,12L*32L) ; else set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,12L*32L) ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/explode.c b/sdk/gbz80-gb/2-1-5/examples/u3/explode.c index 8a0fd7a..045e6bf 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/explode.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/explode.c @@ -1720,7 +1720,7 @@ void shoot_animate1() VBK_REG=1 ; set_bkg_data2( 0, 100U, explodeframes[0] ); - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; @@ -1761,7 +1761,7 @@ void shoot_animate1() for ( dlcv = 0 ; dlcv != 7 ; dlcv++ ) { - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 100U, explodeframes[dlcv] ); @@ -1814,10 +1814,10 @@ void shoot_animate1() set_bkg_palette( 0, 8, explodepals[dlcv] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/explode2.c b/sdk/gbz80-gb/2-1-5/examples/u3/explode2.c index 3e887a5..e7882ef 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/explode2.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/explode2.c @@ -1750,7 +1750,7 @@ void shoot_animate2() for ( dlcv = 0 ; dlcv != 7 ; dlcv++ ) { - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 100U, explodeframes2[dlcv] ); @@ -1800,10 +1800,10 @@ void shoot_animate2() set_bkg_palette( 0, 8, explodepals2[dlcv] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/explode3.c b/sdk/gbz80-gb/2-1-5/examples/u3/explode3.c index 86c5889..19fbc8b 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/explode3.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/explode3.c @@ -1728,7 +1728,7 @@ void shoot_animate3() for ( dlcv = 0 ; dlcv != 7 ; dlcv++ ) { - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 100U, explodeframes3[dlcv] ); @@ -1778,10 +1778,10 @@ void shoot_animate3() set_bkg_palette( 0, 8, explodepals3[dlcv] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/funcs5.c b/sdk/gbz80-gb/2-1-5/examples/u3/funcs5.c index cfafd96..9983393 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/funcs5.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/funcs5.c @@ -408,7 +408,7 @@ void update_screen() //need_refresh = 0 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; //set_data2((unsigned char*)0x9800,(unsigned char*)0x9C00,0x400UL) ; @@ -644,10 +644,10 @@ void update_screen() VBK_REG = 0; // select data bank - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } @@ -1437,7 +1437,7 @@ void initcombatscreen(UBYTE n,UBYTE playertile) } - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; VBK_REG=1 ; @@ -1621,10 +1621,10 @@ void initcombatscreen(UBYTE n,UBYTE playertile) } - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF writegamemessage(conflictdat) ; if ( (monstertile>=0x1D)&&(monstertile<=0x24)&&(playery&0x01) ) diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/intro.c b/sdk/gbz80-gb/2-1-5/examples/u3/intro.c index 49685ba..3452b65 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/intro.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/intro.c @@ -104,14 +104,14 @@ void displaymessage(UBYTE xpos, UBYTE ypos, UBYTE xlen, UBYTE ylen, for ( n=0 ; n ..\..\lib\pocket.s + +echo #ifndef _POCKET_H > ..\..\include\gb\pocket.h +echo #define _POCKET_H >> ..\..\include\gb\pocket.h +echo #define ANALOGUE_POCKET 1 >> ..\..\include\gb\pocket.h +echo #endif >> ..\..\include\gb\pocket.h +echo. >> ..\..\include\gb\pocket.h + +cd ..\..\lib +call make.bat +cd ..\examples\u3 + +..\..\bin\lcc -Wa-l -Wf-bo1 -c -o sosaria.o sosaria.c +..\..\bin\lcc -Wa-l -Wf-bo2 -c -o u3tiles.o u3tiles.c +..\..\bin\lcc -Wa-l -Wf-bo3 -c -o intro.o intro.c +..\..\bin\lcc -Wa-l -Wf-bo4 -c -o u3tiles2.o u3tiles2.c +..\..\bin\lcc -Wa-l -Wf-bo5 -c -o funcs5.o funcs5.c +..\..\bin\lcc -Wa-l -Wf-bo6 -c -o battle.o battle.c +..\..\bin\lcc -Wa-l -Wf-bo7 -c -o battle2.o battle2.c +..\..\bin\lcc -Wa-l -Wf-bo8 -c -o battle3.o battle3.c +..\..\bin\lcc -Wa-l -Wf-bo9 -c -o menucmd.o menucmd.c +..\..\bin\lcc -Wa-l -Wf-bo10 -c -o towns1.o towns1.c +..\..\bin\lcc -Wa-l -Wf-bo11 -c -o towns2.o towns2.c +..\..\bin\lcc -Wa-l -Wf-bo12 -c -o towns3.o towns3.c +..\..\bin\lcc -Wa-l -Wf-bo13 -c -o towns4.o towns4.c +..\..\bin\lcc -Wa-l -Wf-bo14 -c -o peergem.o peergem.c +..\..\bin\lcc -Wa-l -Wf-bo15 -c -o menucmd2.o menucmd2.c +..\..\bin\lcc -Wa-l -Wf-bo16 -c -o menucmd3.o menucmd3.c +..\..\bin\lcc -Wa-l -Wf-bo17 -c -o dungeon1.o dungeon1.c +..\..\bin\lcc -Wa-l -Wf-bo18 -c -o dungfunc.o dungfunc.c +..\..\bin\lcc -Wa-l -Wf-bo19 -c -o dungfun2.o dungfun2.c +..\..\bin\lcc -Wa-l -Wf-bo20 -c -o talkcmd.o talkcmd.c +..\..\bin\lcc -Wa-l -Wf-bo21 -c -o talkcmd2.o talkcmd2.c +..\..\bin\lcc -Wa-l -Wf-bo22 -c -o u3music1.o u3music1.c +..\..\bin\lcc -Wa-l -Wf-bo23 -c -o u3music2.o u3music2.c +..\..\bin\lcc -Wa-l -Wf-bo24 -c -o u3music3.o u3music3.c +..\..\bin\lcc -Wa-l -Wf-bo25 -c -o newsos.o newsos.c +..\..\bin\lcc -Wa-l -Wf-bo26 -c -o cheat.o cheat.c +..\..\bin\lcc -Wa-l -Wf-bo27 -c -o u3music4.o u3music4.c +..\..\bin\lcc -Wa-l -Wf-bo28 -c -o postexo1.o postexo1.c +..\..\bin\lcc -Wa-l -Wf-bo29 -c -o u4towns1.o u4towns1.c +..\..\bin\lcc -Wa-l -Wf-bo30 -c -o u4towns2.o u4towns2.c +..\..\bin\lcc -Wa-l -Wf-bo31 -c -o u4towns3.o u4towns3.c +..\..\bin\lcc -Wa-l -Wf-bo32 -c -o u4towns4.o u4towns4.c +..\..\bin\lcc -Wa-l -Wf-bo33 -c -o u4towns5.o u4towns5.c +..\..\bin\lcc -Wa-l -Wf-bo34 -c -o talkcmd3.o talkcmd3.c +..\..\bin\lcc -Wa-l -Wf-bo35 -c -o talkcmd4.o talkcmd4.c +..\..\bin\lcc -Wa-l -Wf-bo37 -c -o shoot2.o shoot2.c +..\..\bin\lcc -Wa-l -Wf-bo38 -c -o shoot3.o shoot3.c +..\..\bin\lcc -Wa-l -Wf-bo36 -c -o shoot.o shoot.c +..\..\bin\lcc -Wa-l -Wf-bo39 -c -o demonfrm.o demonfrm.c +..\..\bin\lcc -Wa-l -Wf-bo0 -c -o ult3.o ult3.c +..\..\bin\lcc -Wa-l -Wf-bo40 -c -o explode.o explode.c +..\..\bin\lcc -Wa-l -Wf-bo41 -c -o explode2.o explode2.c +..\..\bin\lcc -Wa-l -Wf-bo42 -c -o explode3.o explode3.c +..\..\bin\lcc -Wa-l -Wf-bo43 -c -o wtitle1.o wtitle1.c +..\..\bin\lcc -Wa-l -Wf-bo44 -c -o wtitle2.o wtitle2.c +..\..\bin\lcc -Wa-l -Wf-bo45 -c -o wtitle3.o wtitle3.c +..\..\bin\lcc -Wa-l -Wf-bo46 -c -o wtitle4.o wtitle4.c +..\..\bin\lcc -Wa-l -Wf-bo47 -c -o wtitle5.o wtitle5.c +..\..\bin\lcc -Wa-l -Wf-bo48 -c -o wtitle6.o wtitle6.c +..\..\bin\lcc -Wl-m -Wl-yo64 -Wl-ya4 -Wl-yt0x1B -Wl-yp0x143=0x80 -o ult3.pocket *.o +del ..\..\..\..\..\ult3.pocket +move ult3.pocket ..\..\..\..\.. + +echo. +echo. +echo Finished compiling for Analog Pocket \ No newline at end of file diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/make_cgb.bat b/sdk/gbz80-gb/2-1-5/examples/u3/make_cgb.bat new file mode 100644 index 0000000..d5dc59a --- /dev/null +++ b/sdk/gbz80-gb/2-1-5/examples/u3/make_cgb.bat @@ -0,0 +1,70 @@ +echo Compiling for Gameboy Color +echo. +echo. + +echo .ANALOGUE_POCKET = 0 > ..\..\lib\pocket.s + +echo #ifndef _POCKET_H > ..\..\include\gb\pocket.h +echo #define _POCKET_H >> ..\..\include\gb\pocket.h +echo #endif >> ..\..\include\gb\pocket.h + +cd ..\..\lib +call make.bat +cd ..\examples\u3 + +..\..\bin\lcc -Wa-l -Wf-bo1 -c -o sosaria.o sosaria.c +..\..\bin\lcc -Wa-l -Wf-bo2 -c -o u3tiles.o u3tiles.c +..\..\bin\lcc -Wa-l -Wf-bo3 -c -o intro.o intro.c +..\..\bin\lcc -Wa-l -Wf-bo4 -c -o u3tiles2.o u3tiles2.c +..\..\bin\lcc -Wa-l -Wf-bo5 -c -o funcs5.o funcs5.c +..\..\bin\lcc -Wa-l -Wf-bo6 -c -o battle.o battle.c +..\..\bin\lcc -Wa-l -Wf-bo7 -c -o battle2.o battle2.c +..\..\bin\lcc -Wa-l -Wf-bo8 -c -o battle3.o battle3.c +..\..\bin\lcc -Wa-l -Wf-bo9 -c -o menucmd.o menucmd.c +..\..\bin\lcc -Wa-l -Wf-bo10 -c -o towns1.o towns1.c +..\..\bin\lcc -Wa-l -Wf-bo11 -c -o towns2.o towns2.c +..\..\bin\lcc -Wa-l -Wf-bo12 -c -o towns3.o towns3.c +..\..\bin\lcc -Wa-l -Wf-bo13 -c -o towns4.o towns4.c +..\..\bin\lcc -Wa-l -Wf-bo14 -c -o peergem.o peergem.c +..\..\bin\lcc -Wa-l -Wf-bo15 -c -o menucmd2.o menucmd2.c +..\..\bin\lcc -Wa-l -Wf-bo16 -c -o menucmd3.o menucmd3.c +..\..\bin\lcc -Wa-l -Wf-bo17 -c -o dungeon1.o dungeon1.c +..\..\bin\lcc -Wa-l -Wf-bo18 -c -o dungfunc.o dungfunc.c +..\..\bin\lcc -Wa-l -Wf-bo19 -c -o dungfun2.o dungfun2.c +..\..\bin\lcc -Wa-l -Wf-bo20 -c -o talkcmd.o talkcmd.c +..\..\bin\lcc -Wa-l -Wf-bo21 -c -o talkcmd2.o talkcmd2.c +..\..\bin\lcc -Wa-l -Wf-bo22 -c -o u3music1.o u3music1.c +..\..\bin\lcc -Wa-l -Wf-bo23 -c -o u3music2.o u3music2.c +..\..\bin\lcc -Wa-l -Wf-bo24 -c -o u3music3.o u3music3.c +..\..\bin\lcc -Wa-l -Wf-bo25 -c -o newsos.o newsos.c +..\..\bin\lcc -Wa-l -Wf-bo26 -c -o cheat.o cheat.c +..\..\bin\lcc -Wa-l -Wf-bo27 -c -o u3music4.o u3music4.c +..\..\bin\lcc -Wa-l -Wf-bo28 -c -o postexo1.o postexo1.c +..\..\bin\lcc -Wa-l -Wf-bo29 -c -o u4towns1.o u4towns1.c +..\..\bin\lcc -Wa-l -Wf-bo30 -c -o u4towns2.o u4towns2.c +..\..\bin\lcc -Wa-l -Wf-bo31 -c -o u4towns3.o u4towns3.c +..\..\bin\lcc -Wa-l -Wf-bo32 -c -o u4towns4.o u4towns4.c +..\..\bin\lcc -Wa-l -Wf-bo33 -c -o u4towns5.o u4towns5.c +..\..\bin\lcc -Wa-l -Wf-bo34 -c -o talkcmd3.o talkcmd3.c +..\..\bin\lcc -Wa-l -Wf-bo35 -c -o talkcmd4.o talkcmd4.c +..\..\bin\lcc -Wa-l -Wf-bo37 -c -o shoot2.o shoot2.c +..\..\bin\lcc -Wa-l -Wf-bo38 -c -o shoot3.o shoot3.c +..\..\bin\lcc -Wa-l -Wf-bo36 -c -o shoot.o shoot.c +..\..\bin\lcc -Wa-l -Wf-bo39 -c -o demonfrm.o demonfrm.c +..\..\bin\lcc -Wa-l -Wf-bo0 -c -o ult3.o ult3.c +..\..\bin\lcc -Wa-l -Wf-bo40 -c -o explode.o explode.c +..\..\bin\lcc -Wa-l -Wf-bo41 -c -o explode2.o explode2.c +..\..\bin\lcc -Wa-l -Wf-bo42 -c -o explode3.o explode3.c +..\..\bin\lcc -Wa-l -Wf-bo43 -c -o wtitle1.o wtitle1.c +..\..\bin\lcc -Wa-l -Wf-bo44 -c -o wtitle2.o wtitle2.c +..\..\bin\lcc -Wa-l -Wf-bo45 -c -o wtitle3.o wtitle3.c +..\..\bin\lcc -Wa-l -Wf-bo46 -c -o wtitle4.o wtitle4.c +..\..\bin\lcc -Wa-l -Wf-bo47 -c -o wtitle5.o wtitle5.c +..\..\bin\lcc -Wa-l -Wf-bo48 -c -o wtitle6.o wtitle6.c +..\..\bin\lcc -Wl-m -Wl-yo64 -Wl-ya4 -Wl-yt0x1B -Wl-yp0x143=0x80 -o ult3.gb *.o +del ..\..\..\..\..\ult3.gb +move ult3.gb ..\..\..\..\.. + +echo. +echo. +echo Finished compiling for Gameboy Color diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/menucmd.c b/sdk/gbz80-gb/2-1-5/examples/u3/menucmd.c index a71e421..7b349ca 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/menucmd.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/menucmd.c @@ -719,7 +719,7 @@ UBYTE dopeergem(UBYTE spell) //move_sprite( 5, 0,0 ); wait_vbl_done() ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; } @@ -766,10 +766,10 @@ UBYTE dopeergem(UBYTE spell) set_data2(vidbase+(((UWORD)(p+5))<<5L)+(UWORD)q+6L,(unsigned char*)&tilenum,1L) ; tilenum++ ; } - if ( LCDC_REG & 0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG & VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF DISPLAY_ON ; enable_interrupts2() ; @@ -785,7 +785,7 @@ UBYTE dopeergem(UBYTE spell) VBK_REG=1 ; set_data2(vidbase,(unsigned char*)0x9C00,0x400) ; VBK_REG=0 ; - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } else { @@ -793,7 +793,7 @@ UBYTE dopeergem(UBYTE spell) VBK_REG=1 ; set_data2(vidbase,(unsigned char*)0x9800,0x400) ; VBK_REG=0 ; - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF } peer_semaphore=2 ; @@ -819,7 +819,7 @@ UBYTE getmenuselection3(UBYTE numlines,unsigned char *menudata, void (*descptr)( UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/menucmd2.c b/sdk/gbz80-gb/2-1-5/examples/u3/menucmd2.c index 1f5eb70..eadd44c 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/menucmd2.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/menucmd2.c @@ -476,7 +476,7 @@ UBYTE getmenuselection4(UBYTE numlines,unsigned char *menudata, void (*descptr)( UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/menucmd3.c b/sdk/gbz80-gb/2-1-5/examples/u3/menucmd3.c index 499b45a..ec4e8cc 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/menucmd3.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/menucmd3.c @@ -404,7 +404,7 @@ UBYTE getmenuselection5(UBYTE numlines,unsigned char *menudata, void (*descptr)( UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; @@ -513,7 +513,7 @@ UBYTE doztats() } //move_sprite(5,0,0) ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase2 = (unsigned char*)0x9800 ; else vidbase2 = (unsigned char*)0x9C00 ; @@ -630,9 +630,9 @@ UBYTE doztats() currweapon = 99 ; if ( vidbase2==(unsigned char*)0x09800 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF waitpadup() ; while ( done==0 ) @@ -809,7 +809,7 @@ UBYTE doztats() VBK_REG=1 ; set_data2(vidbase2,(unsigned char*)0x9C00,0x400) ; VBK_REG=0 ; - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } else { @@ -817,7 +817,7 @@ UBYTE doztats() VBK_REG=1 ; set_data2(vidbase2,(unsigned char*)0x9800,0x400) ; VBK_REG=0 ; - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF } //move_sprite( 5, 56,64 ); diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/shoot.c b/sdk/gbz80-gb/2-1-5/examples/u3/shoot.c index bc1d891..eee0e14 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/shoot.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/shoot.c @@ -641,15 +641,15 @@ void endgamegood() if ( key&J_START ) { - if ( LCDC_REG & 0x01 ) + if ( LCDC_REG & SHOW_BACKGROUND ) { - LCDC_REG &= 0xFE ; + LCDC_REG &= HIDE_BACKGROUND; SCX_REG = 0xFC; SCY_REG = 0x80 ; } else { - LCDC_REG |= 0x01 ; + LCDC_REG |= SHOW_BACKGROUND; SCX_REG = 0xFC; SCY_REG = 0x00 ; } @@ -905,6 +905,12 @@ void write_shoot_stats() } +#ifdef ANALOGUE_POCKET + #define LCDC_SHOOT_INIT 0xE2 +#else + #define LCDC_SHOOT_INIT 0x47 +#endif + void shoot_main() { UBYTE i ; @@ -916,8 +922,7 @@ void shoot_main() changemusic = 23 ; DISPLAY_OFF; - - LCDC_REG = 0x47; + LCDC_REG = LCDC_SHOOT_INIT; SPRITES_8x16 ; BGP_REG = 0xE4U; OBP0_REG = OBP1_REG = 0x24 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd.c b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd.c index 45a1564..61896dd 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd.c @@ -1200,7 +1200,7 @@ UBYTE getmenuselection20(UBYTE numlines,unsigned char *menudata, void (*descptr) UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd2.c b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd2.c index 4f6b885..f465c77 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd2.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd2.c @@ -365,7 +365,7 @@ UBYTE getmenuselection21(UBYTE numlines,unsigned char *menudata, void (*descptr) UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd3.c b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd3.c index da14530..fe775e9 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd3.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd3.c @@ -1732,7 +1732,7 @@ UBYTE getmenuselection34(UBYTE numlines,unsigned char *menudata, void (*descptr) UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd4.c b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd4.c index 399acd7..7613928 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd4.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/talkcmd4.c @@ -369,7 +369,7 @@ UBYTE getmenuselection35(UBYTE numlines,unsigned char *menudata, void (*descptr) UBYTE currline ; UBYTE keys ; - if ( LCDC_REG&0x08 ) //select $9C00-$9FFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) //select $9C00-$9FFF vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle1.c b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle1.c index 78b91e9..5e7f4fc 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle1.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle1.c @@ -1151,7 +1151,7 @@ void title_animate1() set_bkg_palette( 0, 8, walkpals[0] ); - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) vidbase = (unsigned char*)0x9C00 ; else vidbase = (unsigned char*)0x9800 ; @@ -1191,7 +1191,7 @@ void title_animate1() dlcv = 0 ; - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 252U, walkframes1[dlcv] ); @@ -1237,10 +1237,10 @@ void title_animate1() set_bkg_palette( 0, 8, walkpals[dlcv] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF if ( joypad() & J_START ) @@ -1280,6 +1280,6 @@ void title_animate1() waitpadup() ; - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle2.c b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle2.c index 655d054..5eb6274 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle2.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle2.c @@ -1674,7 +1674,7 @@ void title_animate2() break ; } - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 252U, walkframes2[dlcv] ); @@ -1720,10 +1720,10 @@ void title_animate2() set_bkg_palette( 0, 8, walkpals[dlcv+1] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle3.c b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle3.c index a87ad11..b158504 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle3.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle3.c @@ -1674,7 +1674,7 @@ void title_animate3() break ; } - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 252U, walkframes3[dlcv] ); @@ -1720,10 +1720,10 @@ void title_animate3() set_bkg_palette( 0, 8, walkpals[dlcv+4] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle4.c b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle4.c index f4f9160..467b9a5 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle4.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle4.c @@ -1673,7 +1673,7 @@ void title_animate4() break ; } - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 252U, walkframes4[dlcv] ); @@ -1719,10 +1719,10 @@ void title_animate4() set_bkg_palette( 0, 8, walkpals[dlcv+7] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle5.c b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle5.c index 4d67828..d0a1966 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle5.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle5.c @@ -1673,7 +1673,7 @@ void title_animate5() break ; } - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 252U, walkframes5[dlcv] ); @@ -1719,10 +1719,10 @@ void title_animate5() set_bkg_palette( 0, 8, walkpals[dlcv+10] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF diff --git a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle6.c b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle6.c index 37807fd..972fe53 100644 --- a/sdk/gbz80-gb/2-1-5/examples/u3/wtitle6.c +++ b/sdk/gbz80-gb/2-1-5/examples/u3/wtitle6.c @@ -1669,7 +1669,7 @@ void title_animate6() break ; } - if ( LCDC_REG&0x08 ) + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) { vidbase = (unsigned char*)0x9800 ; set_bkg_data2( 0, 252U, walkframes6[dlcv] ); @@ -1715,10 +1715,10 @@ void title_animate6() set_bkg_palette( 0, 8, walkpals[dlcv+13] ); - if ( LCDC_REG&0x08 ) - LCDC_REG &= 0xF7 ; //select $9800-$9BFF + if ( LCDC_REG&VIDEO_BUFFER_SECONDARY ) + LCDC_REG &= VIDEO_BUFFER_PRIMARY ; //select $9800-$9BFF else - LCDC_REG |= 0x08 ; //select $9C00-$9FFF + LCDC_REG |= VIDEO_BUFFER_SECONDARY ; //select $9C00-$9FFF } diff --git a/sdk/gbz80-gb/2-1-5/include/gb/gb.h b/sdk/gbz80-gb/2-1-5/include/gb/gb.h index 64dc20d..5909507 100644 --- a/sdk/gbz80-gb/2-1-5/include/gb/gb.h +++ b/sdk/gbz80-gb/2-1-5/include/gb/gb.h @@ -5,6 +5,7 @@ #include #include #include +#include /* Joypad bits */ @@ -192,35 +193,92 @@ hiramcpy(UBYTE dst, /* ************************************************************ */ -#define DISPLAY_ON \ - LCDC_REG|=0x80U +#ifdef ANALOGUE_POCKET -#define DISPLAY_OFF \ - display_off(); + #define DISPLAY_ON \ + LCDC_REG|=0x01U -#define SHOW_BKG \ - LCDC_REG|=0x01U + #define DISPLAY_OFF \ + display_off(); + + #define SHOW_BACKGROUND \ + 0x80 + #define HIDE_BACKGROUND \ + 0x7F -#define HIDE_BKG \ - LCDC_REG&=0xFEU + #define SHOW_BKG \ + LCDC_REG|=0x80U -#define SHOW_WIN \ - LCDC_REG|=0x20U + #define HIDE_BKG \ + LCDC_REG&=0x7FU -#define HIDE_WIN \ - LCDC_REG&=0xDFU + #define SHOW_WIN \ + LCDC_REG|=0x04U -#define SHOW_SPRITES \ - LCDC_REG|=0x02U + #define HIDE_WIN \ + LCDC_REG&=0xFBU -#define HIDE_SPRITES \ - LCDC_REG&=0xFDU + #define SHOW_SPRITES \ + LCDC_REG|=0x40U -#define SPRITES_8x16 \ - LCDC_REG|=0x04U + #define HIDE_SPRITES \ + LCDC_REG&=0xBFU -#define SPRITES_8x8 \ - LCDC_REG&=0xFBU + #define SPRITES_8x16 \ + LCDC_REG|=0x20U + + #define SPRITES_8x8 \ + LCDC_REG&=0xDFU + + #define VIDEO_BUFFER_SECONDARY \ + 0x10 + + #define VIDEO_BUFFER_PRIMARY \ + 0xEF + +#else + #define DISPLAY_ON \ + LCDC_REG|=0x80U + + #define DISPLAY_OFF \ + display_off(); + + #define SHOW_BACKGROUND \ + 0x01 + #define HIDE_BACKGROUND \ + 0xFE + + #define SHOW_BKG \ + LCDC_REG|=0x01U + + #define HIDE_BKG \ + LCDC_REG&=0xFEU + + #define SHOW_WIN \ + LCDC_REG|=0x20U + + #define HIDE_WIN \ + LCDC_REG&=0xDFU + + #define SHOW_SPRITES \ + LCDC_REG|=0x02U + + #define HIDE_SPRITES \ + LCDC_REG&=0xFDU + + #define SPRITES_8x16 \ + LCDC_REG|=0x04U + + #define SPRITES_8x8 \ + LCDC_REG&=0xFBU + + #define VIDEO_BUFFER_SECONDARY \ + 0x08 + + #define VIDEO_BUFFER_PRIMARY \ + 0xF7 + +#endif /* ************************************************************ */ diff --git a/sdk/gbz80-gb/2-1-5/include/gb/hardware.h b/sdk/gbz80-gb/2-1-5/include/gb/hardware.h index e8f8ea4..7a3940e 100644 --- a/sdk/gbz80-gb/2-1-5/include/gb/hardware.h +++ b/sdk/gbz80-gb/2-1-5/include/gb/hardware.h @@ -2,6 +2,7 @@ #define _HARDWARE_H #include +#include #define P1_REG (*(UBYTE *)0xFF00) /* Joystick: 1.1.P15.P14.P13.P12.P11.P10 */ #define SB_REG (*(UBYTE *)0xFF01) /* Serial IO data buffer */ @@ -32,7 +33,11 @@ #define NR50_REG (*(UBYTE *)0xFF24) /* Sound register */ #define NR51_REG (*(UBYTE *)0xFF25) /* Sound register */ #define NR52_REG (*(UBYTE *)0xFF26) /* Sound register */ -#define LCDC_REG (*(UBYTE *)0xFF40) /* LCD control */ +#ifdef ANALOGUE_POCKET + #define LCDC_REG (*(UBYTE *)0xFF4E) /* LCD control */ +#else + #define LCDC_REG (*(UBYTE *)0xFF40) /* LCD control */ +#endif #define STAT_REG (*(UBYTE *)0xFF41) /* LCD status */ #define SCY_REG (*(UBYTE *)0xFF42) /* Scroll Y */ #define SCX_REG (*(UBYTE *)0xFF43) /* Scroll X */ diff --git a/sdk/gbz80-gb/2-1-5/include/gb/pocket.h b/sdk/gbz80-gb/2-1-5/include/gb/pocket.h new file mode 100644 index 0000000..0b8ad8c --- /dev/null +++ b/sdk/gbz80-gb/2-1-5/include/gb/pocket.h @@ -0,0 +1,5 @@ +#ifndef _POCKET_H +#define _POCKET_H +#define ANALOGUE_POCKET 1 +#endif + diff --git a/sdk/gbz80-gb/2-1-5/include/pocket.h b/sdk/gbz80-gb/2-1-5/include/pocket.h new file mode 100644 index 0000000..9a95a2c --- /dev/null +++ b/sdk/gbz80-gb/2-1-5/include/pocket.h @@ -0,0 +1 @@ +#include diff --git a/sdk/gbz80-gb/2-1-5/lib/cgb.s b/sdk/gbz80-gb/2-1-5/lib/cgb.s index c6a549d..039501e 100644 --- a/sdk/gbz80-gb/2-1-5/lib/cgb.s +++ b/sdk/gbz80-gb/2-1-5/lib/cgb.s @@ -32,7 +32,11 @@ _set_bkg_palette:: LD E,A ; A = first BCPS data 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,1$ LD A,E @@ -76,7 +80,11 @@ _set_sprite_palette:: LD E,A ; A = first BCPS data 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,1$ LD A,E @@ -117,7 +125,11 @@ _set_bkg_palette_entry:: 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,1$ LD A,E @@ -158,7 +170,11 @@ _set_sprite_palette_entry:: 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,1$ LD A,E diff --git a/sdk/gbz80-gb/2-1-5/lib/cpy_data.s b/sdk/gbz80-gb/2-1-5/lib/cpy_data.s index df8088e..2807f95 100644 --- a/sdk/gbz80-gb/2-1-5/lib/cpy_data.s +++ b/sdk/gbz80-gb/2-1-5/lib/cpy_data.s @@ -6,7 +6,11 @@ .copy_vram:: 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,1$ LD A,(BC) diff --git a/sdk/gbz80-gb/2-1-5/lib/crt0.s b/sdk/gbz80-gb/2-1-5/lib/crt0.s index d13e07f..23899ad 100644 --- a/sdk/gbz80-gb/2-1-5/lib/crt0.s +++ b/sdk/gbz80-gb/2-1-5/lib/crt0.s @@ -78,18 +78,15 @@ .header: NOP JP 0x150 - .byte 0xCE,0xED,0x66,0x66 - .byte 0xCC,0x0D,0x00,0x0B - .byte 0x03,0x73,0x00,0x83 - .byte 0x00,0x0C,0x00,0x0D - .byte 0x00,0x08,0x11,0x1F - .byte 0x88,0x89,0x00,0x0E - .byte 0xDC,0xCC,0x6E,0xE6 - .byte 0xDD,0xDD,0xD9,0x99 - .byte 0xBB,0xBB,0x67,0x63 - .byte 0x6E,0x0E,0xEC,0xCC - .byte 0xDD,0xDC,0x99,0x9F - .byte 0xBB,0xB9,0x33,0x3E + .if .ANALOGUE_POCKET + .byte 0x01, 0x10, 0xCE, 0xEF, 0x00, 0x00, 0x44, 0xAA, 0x00, 0x74, 0x00, 0x18, 0x11, 0x95, 0x00, 0x34 + .byte 0x00, 0x1A, 0x00, 0xD5, 0x00, 0x22, 0x00, 0x69, 0x6F, 0xF6, 0xF7, 0x73, 0x09, 0x90, 0xE1, 0x10 + .byte 0x44, 0x40, 0x9A, 0x90, 0xD5, 0xD0, 0x44, 0x30, 0xA9, 0x21, 0x5D, 0x48, 0x22, 0xE0, 0xF8, 0x60 + .else + .byte 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D + .byte 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E, 0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99 + .byte 0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC, 0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E + .endif ;; Title of the game .org 0x134 @@ -204,7 +201,11 @@ LDH (.OBP1),A ;; Turn the screen on - LD A,#0b11000000 ; LCD = On + .if .ANALOGUE_POCKET + LD A,#0b00000011 ; LCD = On + .else + LD A,#0b11000000 ; LCD = On + .endif ; WindowBank = 0x9C00 ; Window = Off ; BG Chr = 0x8800 @@ -390,7 +391,11 @@ _sys_time:: _wait_vbl_done:: ;; Check if the screen is on LDH A,(.LCDC) - ADD A + .if .ANALOGUE_POCKET + RRA + .else + ADD A + .endif RET NC ; Return if screen is off 1$: HALT ; Wait for any interrupt @@ -408,7 +413,11 @@ _wait_vbl_done:: _display_off:: ;; Check if the screen is on LDH A,(.LCDC) - ADD A + .if .ANALOGUE_POCKET + RRA + .else + ADD A + .endif RET NC ; Return if screen is off 1$: ; We wait for the *NEXT* VBL LDH A,(.LY) @@ -420,7 +429,11 @@ _display_off:: JR C,2$ ; Loop until bigger than 0x90 LDH A,(.LCDC) - AND #0b01111111 + .if .ANALOGUE_POCKET + AND #0b11111110 + .else + AND #0b01111111 + .endif LDH (.LCDC),A ; Turn off screen RET diff --git a/sdk/gbz80-gb/2-1-5/lib/drawing.s b/sdk/gbz80-gb/2-1-5/lib/drawing.s index bbf070a..a56a4e2 100644 --- a/sdk/gbz80-gb/2-1-5/lib/drawing.s +++ b/sdk/gbz80-gb/2-1-5/lib/drawing.s @@ -76,7 +76,11 @@ ;; Turn the screen off LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 0,A +.else BIT 7,A +.endif JR Z,1$ ;; Turn the screen off @@ -96,7 +100,11 @@ LD A,#72 ; Set line at which LCD interrupt occurs LDH (.LYC),A - LD A,#0b01000100 ; Set LCD interrupt to occur when LY = LCY +.if .ANALOGUE_POCKET + LD A,#0b00100010 ; Set LCD interrupt to occur when LY = LCY +.else + LD A,#0b01000100 +.endif LDH (.STAT),A LDH A,(.IE) @@ -125,10 +133,17 @@ ;; Turn the screen on LDH A,(.LCDC) +.if .ANALOGUE_POCKET + OR #0b10001001 ; LCD = On + ; BG Chr = 0x8000 + ; BG = On + AND #0b11101111 ; BG Bank = 0x9800 +.else OR #0b10010001 ; LCD = On ; BG Chr = 0x8000 ; BG = On AND #0b11110111 ; BG Bank = 0x9800 +.endif LDH (.LCDC),A LD A,#.G_MODE @@ -148,7 +163,11 @@ .vbl:: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + OR #0b00001000 ; Set BG Chr to 0x8000 +.else OR #0b00010000 ; Set BG Chr to 0x8000 +.endif LDH (.LCDC),A LD A,#72 ; Set line at which LCD interrupt occurs @@ -160,11 +179,19 @@ .lcd:: 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + BIT 6,A +.else BIT 1,A +.endif JR NZ,1$ LDH A,(.LCDC) +.if .ANALOGUE_POCKET + AND #0b11110111 ; Set BG Chr to 0x8800 +.else AND #0b11101111 ; Set BG Chr to 0x8800 +.endif LDH (.LCDC),A RET @@ -1310,7 +1337,11 @@ nchgy$: LD E,#0x00 3$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + BIT 6,A +.else BIT 1,A +.endif JR NZ,3$ LD A,(HL) @@ -1348,7 +1379,11 @@ nchgy$: LD C,#0x00 12$: LDH A,(.STAT) - BIT 1,A +.if .ANALOGUE_POCKET + BIT 6,A +.else + BIT 1,A +.endif JR NZ,12$ LD A,(HL) @@ -1380,7 +1415,11 @@ nchgy$: LD C,#0x00 22$: LDH A,(.STAT) - BIT 1,A +.if .ANALOGUE_POCKET + BIT 6,A +.else + BIT 1,A +.endif JR NZ,22$ LD A,(HL) @@ -1412,7 +1451,11 @@ nchgy$: LD C,#0xFF 32$: LDH A,(.STAT) - BIT 1,A +.if .ANALOGUE_POCKET + BIT 6,A +.else + BIT 1,A +.endif JR NZ,32$ LD A,(HL) @@ -1452,7 +1495,11 @@ nchgy$: gp$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + BIT 6,A +.else BIT 1,A +.endif JR NZ,gp$ LD A,(HL+) @@ -1579,7 +1626,11 @@ b1$: .endif chrwait$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + BIT 6,A +.else BIT 1,A +.endif JR NZ,chrwait$ LD A,D diff --git a/sdk/gbz80-gb/2-1-5/lib/font.s b/sdk/gbz80-gb/2-1-5/lib/font.s index 3867577..41559c4 100644 --- a/sdk/gbz80-gb/2-1-5/lib/font.s +++ b/sdk/gbz80-gb/2-1-5/lib/font.s @@ -45,13 +45,21 @@ font_copy_uncompressed:: dec d 1$: ldh a,(.STAT) +.if .ANALOGUE_POCKET + bit 6,a +.else bit 1,a +.endif jr nz,#.-4 ld a,(bc) ld (hl+),a inc bc ldh a,(.STAT) +.if .ANALOGUE_POCKET + bit 6,a +.else bit 1,a +.endif jr nz,#.-4 ld a,(bc) ld (hl),a @@ -112,12 +120,20 @@ font_copy_compressed_grey1: ld c,a font_copy_compressed_grey2: ldh a,(.STAT) +.if .ANALOGUE_POCKET + bit 6,a +.else bit 1,a +.endif jr nz,#.-4 ld (hl),b inc hl ldh a,(.STAT) +.if .ANALOGUE_POCKET + bit 6,a +.else bit 1,a +.endif jr nz,#.-4 ld (hl),c inc hl @@ -305,7 +321,11 @@ set_char_no_encoding: LD BC,#0x9800 ADD HL,BC ldh a,(.STAT) +.if .ANALOGUE_POCKET + bit 6,a +.else bit 1,a +.endif jr nz,#.-4 LD (HL),E POP HL @@ -404,7 +424,11 @@ _cls:: LD D,#0x20 2$: ldh a,(.STAT) +.if .ANALOGUE_POCKET + bit 6,a +.else bit 1,a +.endif jr nz,#.-4 LD (HL),#.SPACE INC HL @@ -510,7 +534,11 @@ _posy:: LD D,#0x20 2$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,2$ LD A,(BC) LD (HL+),A @@ -522,7 +550,11 @@ _posy:: LD D,#0x20 3$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,3$ LD A,#.SPACE LD (HL+),A @@ -546,7 +578,11 @@ _posy:: .tmode:: DI LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 0,A +.else BIT 7,A +.endif JR Z,1$ CALL .display_off LD BC,#.vbl diff --git a/sdk/gbz80-gb/2-1-5/lib/get_data.s b/sdk/gbz80-gb/2-1-5/lib/get_data.s index 8480578..093ae0e 100644 --- a/sdk/gbz80-gb/2-1-5/lib/get_data.s +++ b/sdk/gbz80-gb/2-1-5/lib/get_data.s @@ -7,7 +7,11 @@ _get_bkg_data:: _get_win_data:: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 3,A +.else BIT 4,A +.endif JP NZ,_get_sprite_data PUSH BC @@ -60,7 +64,11 @@ _get_win_data:: RES 4,H ; Switch to 0x8800 4$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,4$ LD A,(HL+) diff --git a/sdk/gbz80-gb/2-1-5/lib/get_xy_t.s b/sdk/gbz80-gb/2-1-5/lib/get_xy_t.s index d872dd6..99ccedc 100644 --- a/sdk/gbz80-gb/2-1-5/lib/get_xy_t.s +++ b/sdk/gbz80-gb/2-1-5/lib/get_xy_t.s @@ -8,7 +8,11 @@ PUSH HL ; Store WH PUSH HL ; Store WH LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 1,A +.else BIT 6,A +.endif JR NZ,1$ LD HL,#0x9800 ; HL = origin JR .get_xy_tt @@ -20,7 +24,11 @@ .get_xy_btt:: PUSH HL ; Store WH LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 4,A +.else BIT 3,A +.endif JR NZ,1$ LD HL,#0x9800 ; HL = origin JR .get_xy_tt @@ -50,7 +58,11 @@ PUSH DE ; Store WH 3$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,3$ LD A,(HL+) ; Copy W tiles diff --git a/sdk/gbz80-gb/2-1-5/lib/global.s b/sdk/gbz80-gb/2-1-5/lib/global.s index e066378..7452aac 100644 --- a/sdk/gbz80-gb/2-1-5/lib/global.s +++ b/sdk/gbz80-gb/2-1-5/lib/global.s @@ -1,4 +1,4 @@ - + .include "pocket.s" ;; Screen dimensions .MAXCURSPOSX = 0x13 ; In tiles .MAXCURSPOSY = 0x11 @@ -54,7 +54,11 @@ .NR50 = 0x24 ; Sound register .NR51 = 0x25 ; Sound register .NR52 = 0x26 ; Sound register - .LCDC = 0x40 ; LCD control + .if .ANALOGUE_POCKET + .LCDC = 0x4E ; LCD control for Analogue Pocket + .else + .LCDC = 0x40 ; LCD control for GB/GBC + .endif .STAT = 0x41 ; LCD status .SCY = 0x42 ; Scroll Y .SCX = 0x43 ; Scroll X diff --git a/sdk/gbz80-gb/2-1-5/lib/init_tt.s b/sdk/gbz80-gb/2-1-5/lib/init_tt.s index dce0fde..05ce9e6 100644 --- a/sdk/gbz80-gb/2-1-5/lib/init_tt.s +++ b/sdk/gbz80-gb/2-1-5/lib/init_tt.s @@ -6,7 +6,11 @@ .init_vram:: 1$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,1$ LD (HL),B @@ -19,7 +23,11 @@ ;; Initialize window tile table with B .init_wtt:: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 1,A +.else BIT 6,A +.endif JR NZ,1$ LD HL,#0x9800 ; HL = origin JR .init_tt @@ -29,7 +37,11 @@ ;; Initialize background tile table with B .init_btt:: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 4,A +.else BIT 3,A +.endif JR NZ,1$ LD HL,#0x9800 ; HL = origin JR .init_tt diff --git a/sdk/gbz80-gb/2-1-5/lib/input.s b/sdk/gbz80-gb/2-1-5/lib/input.s index 236454e..b5f3f78 100644 --- a/sdk/gbz80-gb/2-1-5/lib/input.s +++ b/sdk/gbz80-gb/2-1-5/lib/input.s @@ -62,7 +62,11 @@ ;; Turn the screen off LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 0,A +.else BIT 7,A +.endif JR Z,1$ ;; Turn the screen off @@ -109,6 +113,16 @@ LDH (.OBP0),A ;; Turn the screen on +.if .ANALOGUE_POCKET + LD A,#0b10000011 ; LCD = On + ; WindowBank = 0x9C00 + ; Window = Off + ; BG Chr = 0x8800 + ; BG Bank = 0x9800 + ; OBJ = 8x8 + ; OBJ = Off + ; BG = On +.else LD A,#0b11000001 ; LCD = On ; WindowBank = 0x9C00 ; Window = Off @@ -117,6 +131,7 @@ ; OBJ = 8x8 ; OBJ = Off ; BG = On +.endif LDH (.LCDC),A LD A,#.T_MODE_INOUT @@ -271,7 +286,11 @@ PUSH BC PUSH DE LDH A,(.LCDC) +.if .ANALOGUE_POCKET + OR #0b00000100 ; Window = On +.else OR #0b00100000 ; Window = On +.endif LDH (.LCDC),A LD A,#.MAXWNDPOSY ; Show window 1$: @@ -309,7 +328,11 @@ JR 1$ 3$: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + AND #0b11111011 ; Window = Off +.else AND #0b11011111 ; Window = Off +.endif LDH (.LCDC),A POP DE POP BC @@ -378,13 +401,21 @@ LD (.msy),A CALL .set_mouse LDH A,(.LCDC) +.if .ANALOGUE_POCKET + OR #0b01000000 ; OBJ = On +.else OR #0b00000010 ; OBJ = On +.endif LDH (.LCDC),A RET .hide_mouse: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + AND #0b10111111 ; OBJ = Off +.else AND #0b11111101 ; OBJ = Off +.endif LDH (.LCDC),A RET diff --git a/sdk/gbz80-gb/2-1-5/lib/make.sh b/sdk/gbz80-gb/2-1-5/lib/make.sh deleted file mode 100644 index eb27666..0000000 --- a/sdk/gbz80-gb/2-1-5/lib/make.sh +++ /dev/null @@ -1 +0,0 @@ -wine cmd /c make.bat diff --git a/sdk/gbz80-gb/2-1-5/lib/pocket.s b/sdk/gbz80-gb/2-1-5/lib/pocket.s new file mode 100644 index 0000000..44453e9 --- /dev/null +++ b/sdk/gbz80-gb/2-1-5/lib/pocket.s @@ -0,0 +1 @@ +.ANALOGUE_POCKET = 1 diff --git a/sdk/gbz80-gb/2-1-5/lib/set_data.s b/sdk/gbz80-gb/2-1-5/lib/set_data.s index 96a3785..1365c08 100644 --- a/sdk/gbz80-gb/2-1-5/lib/set_data.s +++ b/sdk/gbz80-gb/2-1-5/lib/set_data.s @@ -7,7 +7,11 @@ _set_bkg_data:: _set_win_data:: LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 3,A +.else BIT 4,A +.endif JP NZ,_set_sprite_data PUSH BC @@ -60,7 +64,11 @@ _set_win_data:: RES 4,H ; Switch to 0x8800 4$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,4$ LD A,(BC) diff --git a/sdk/gbz80-gb/2-1-5/lib/set_xy_t.s b/sdk/gbz80-gb/2-1-5/lib/set_xy_t.s index ba5ffbe..b19d52b 100644 --- a/sdk/gbz80-gb/2-1-5/lib/set_xy_t.s +++ b/sdk/gbz80-gb/2-1-5/lib/set_xy_t.s @@ -7,7 +7,11 @@ .set_xy_wtt:: PUSH HL ; Store WH LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 1,A +.else BIT 6,A +.endif JR NZ,1$ LD HL,#0x9800 ; HL = origin JR .set_xy_tt @@ -19,7 +23,11 @@ .set_xy_btt:: PUSH HL ; Store WH LDH A,(.LCDC) +.if .ANALOGUE_POCKET + BIT 4,A +.else BIT 3,A +.endif JR NZ,1$ LD HL,#0x9800 ; HL = origin JR .set_xy_tt @@ -49,7 +57,11 @@ PUSH DE ; Store WH 3$: LDH A,(.STAT) +.if .ANALOGUE_POCKET + AND #0x40 +.else AND #0x02 +.endif JR NZ,3$ LD A,(BC) ; Copy W tiles diff --git a/ult3.pocket b/ult3.pocket new file mode 100644 index 0000000..3f353dc Binary files /dev/null and b/ult3.pocket differ