diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md index 77c6ad7..cda4903 100644 --- a/ACKNOWLEDGEMENTS.md +++ b/ACKNOWLEDGEMENTS.md @@ -14,6 +14,7 @@ This project would not have been a success without help from the Apple // commun * Kelvin Sherlock for GoldenGate and Profuse which are the fundamental tools I used for building this project. * Ken Gagne and Juiced.GS for making tools like ORCA and GoldenGate available. * Stephen Heumann for NetDisk which I used to transfer my latest build to my real GS for testing. +* Ewen Wannop (Speccie) for his great network tools, especially Versions which I am using to assist in pushing out fixes and new versions of BuGS. I had a problem with the Check File Finder extension but very quickly he found the problem. I very much appreciate his support getting that problem fixed. ## Apple // Forever! diff --git a/BuGS.xcodeproj/project.pbxproj b/BuGS.xcodeproj/project.pbxproj index f98063b..05b2379 100644 --- a/BuGS.xcodeproj/project.pbxproj +++ b/BuGS.xcodeproj/project.pbxproj @@ -99,6 +99,7 @@ 9D47CBE02547BEDB00CDA5CB /* gameMushroom.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameMushroom.s; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.asm.orcam; }; 9D47CC14254A698900CDA5CB /* gamePlayer.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gamePlayer.s; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.asm.orcam; }; 9D47CCBA25525C1A00CDA5CB /* genData.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = genData.pl; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.perl; }; + 9D4EF43E25D7006A001BEDB0 /* tar */ = {isa = PBXFileReference; lastKnownFileType = file; path = tar; sourceTree = ""; }; 9D53E5B32562320300E10169 /* gameShot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameShot.s; sourceTree = ""; }; 9D53E6472565939300E10169 /* BUGS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = BUGS.md; sourceTree = ""; }; 9D62AF3B249871A300348F45 /* colour.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = colour.s; sourceTree = ""; }; @@ -230,6 +231,7 @@ 9D1716962491C49300C83148 /* config.txt */, 9D1716982491C49300C83148 /* createDiskImage */, 9D17169A2491C49300C83148 /* head.mk */, + 9D4EF43E25D7006A001BEDB0 /* tar */, 9D17169C2491C49300C83148 /* launchEmulator */, 9D6DB18625A411DA00CDBF05 /* BuGS.2mg */, 9D17169E2491C49300C83148 /* orca-asm */, diff --git a/BuGS/genData.pl b/BuGS/genData.pl index b2ee871..b05b55f 100755 --- a/BuGS/genData.pl +++ b/BuGS/genData.pl @@ -132,11 +132,19 @@ sub gameXYToTileOffset } +sub rhsXYToTileNum +{ + my ($x, $y) = @_; + + return $gEquates{"RHS_FIRST_TILE"} + ($y * $gEquates{"RHS_NUM_TILES_WIDE"}) + $x; +} + + sub rhsXYToTileOffset { my ($x, $y) = @_; - return ($gEquates{"RHS_FIRST_TILE"} + ($y * $gEquates{"RHS_NUM_TILES_WIDE"}) + $x) * $gEquates{"SIZEOF_TILE_INFO"}; + return rhsXYToTileNum($x, $y) * $gEquates{"SIZEOF_TILE_INFO"}; } @@ -181,6 +189,15 @@ sub addLhsGameTile } +sub addRhsGameTile +{ + my ($x, $y, $tileType) = @_; + my $tileNum = rhsXYToTileNum($x, $y); + $gTileType[$tileNum] = $tileType; + addDirtyNonGameTile($tileNum); +} + + sub addLhsGameString { my ($x, $y, $string) = @_; @@ -468,6 +485,12 @@ sub initNonGameTiles $x = 2; $y = 21; addLhsGameString($x, $y, "LIVES:"); + + for (my $tileY = 0; $tileY < $gEquates{"TOTAL_TILES_TALL"}; $tileY++) + { + addLhsGameTile($gEquates{"LHS_NUM_TILES_WIDE"} - 1, $tileY, "TILE_RIGHT_BAR"); + addRhsGameTile(0, $tileY, "TILE_LEFT_BAR"); + } } diff --git a/BuGS/globals.s b/BuGS/globals.s index 742cb27..ed0244d 100644 --- a/BuGS/globals.s +++ b/BuGS/globals.s @@ -104,11 +104,13 @@ TILE_NUMBER_9 gequ 48*4 TILE_SOLID1 gequ 49*4 TILE_SOLID2 gequ 50*4 TILE_SOLID3 gequ 51*4 +TILE_RIGHT_BAR gequ 52*4 +TILE_LEFT_BAR gequ 53*4 -TILE_PLAYER gequ 52*4 -TILE_LETTER_WHITE_U gequ 53*4 -TILE_LETTER_GREEN_G gequ 54*4 -TILE_LETTER_GREEN_S gequ 55*4 +TILE_PLAYER gequ 54*4 +TILE_LETTER_WHITE_U gequ 55*4 +TILE_LETTER_GREEN_G gequ 56*4 +TILE_LETTER_GREEN_S gequ 57*4 TILE_POISON_A_MUSHROOM gequ TILE_POISON_MUSHROOM4-TILE_MUSHROOM4 @@ -245,6 +247,8 @@ tileJumpTable dc a4'solid0' dc a4'solid1' dc a4'solid2' dc a4'solid3' + dc a4'rightBar' + dc a4'leftBar' dc a4'drawPlayer' dc a4'letterWhiteU' dc a4'letterGreenG' diff --git a/BuGS/make/BuGS.2mg b/BuGS/make/BuGS.2mg index 3f40a1c..8744f0b 100644 Binary files a/BuGS/make/BuGS.2mg and b/BuGS/make/BuGS.2mg differ diff --git a/BuGS/make/createDiskImage b/BuGS/make/createDiskImage index 59828c6..2c0d3ab 100755 --- a/BuGS/make/createDiskImage +++ b/BuGS/make/createDiskImage @@ -1,10 +1,5 @@ #!/bin/sh - -MOUNTDIR=/tmp/a2gs_mount.$$ -TMPDISKIMAGE=/tmp/a2gs_diskimage_$$.2mg -TEMPLATEDISKIMAGE=make/BuGS.2mg - if [ $# -lt 3 ] then echo USAGE: $0 diskimage file directory @@ -19,10 +14,18 @@ shift DISKIMAGEDEST="$1" shift -DEST="${MOUNTDIR}/${DISKIMAGEDEST}" COPYDIRS=$* +PROGRAM=`basename "$FILE"` +TMPDIR=/tmp/a2gs_mount.$$ +MOUNTDIR="${TMPDIR}/$PROGRAM" +TMPDISKIMAGE=/tmp/a2gs_diskimage_$$.2mg +TMPARCHIVE=/tmp/s2gs_archive_$$.shk +TEMPLATEDISKIMAGE="make/${PROGRAM}.2mg" +ARCHIVE=`dirname "$DISKIMAGE"`/"${PROGRAM}.shk" +DEST="${MOUNTDIR}/${DISKIMAGEDEST}" + cleanupAndExit() { umount "$MOUNTDIR" 2> /dev/null @@ -45,6 +48,7 @@ then cleanupAndExit fi +mkdir "$TMPDIR" mkdir "$MOUNTDIR" if [ $? != 0 ] then @@ -86,9 +90,17 @@ do cp "$FILEORDIR" "${MOUNTDIR}/$FILEORDIR" fi done - cd "$OLDDIR" done +cd "$TMPDIR" +$ORCA "$OLDDIR/make/tar" cf "$TMPARCHIVE" "$PROGRAM" +if [ $? != 0 ] +then + echo Unable to create archive. + cleanupAndExit +fi +cd "$OLDDIR" + RETRIES=0 while [ $RETRIES -lt 5 ] do @@ -115,14 +127,23 @@ then cleanupAndExit fi +cp "$TMPARCHIVE" "$ARCHIVE" +if [ $? != 0 ] +then + echo Unable to copy the archive to the destination. + cleanupAndExit +fi + # This is a special case for my personal build environment. If I can find my home directory # and the Sites directory in it, then also put a copy of the build there also. This makes it # available over http to my real GS so I can test it there also. if [ -d /Users/jrand/Sites ] then - cp "$TMPDISKIMAGE" /Users/jrand/Sites/BuGS.2mg + cp "$TMPDISKIMAGE" "/Users/jrand/Sites/$PROGRAM.2mg" + cp "$TMPARCHIVE" "/Users/jrand/Sites/$PROGRAM.shk" fi rm -f "$TMPDISKIMAGE" -rmdir "$MOUNTDIR" +rm -f "$TMPARCHIVE" +rm -rf "$TMPDIR" exit 0 diff --git a/BuGS/make/tar b/BuGS/make/tar new file mode 100644 index 0000000..3e14264 Binary files /dev/null and b/BuGS/make/tar differ diff --git a/BuGS/sprites/solid.s b/BuGS/sprites/solid.s index 854a8b3..6116f50 100644 --- a/BuGS/sprites/solid.s +++ b/BuGS/sprites/solid.s @@ -235,5 +235,115 @@ solid3 entry _spriteFooter rtl + + +rightBar entry + _spriteHeader + + ldx #$0000 + ldy #$2002 + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + _spriteFooter + rtl + + +leftBar entry + _spriteHeader + + ldx #$2002 + ldy #$0000 + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + _spriteFooter + rtl end