From b0607f9f3c91b3a453109107e12aadb31593726a Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Fri, 22 Aug 2025 23:09:31 +0300 Subject: [PATCH] Move Pomppu Paavo sprites to files --- Games/Pomppu Paavo/Pomppu Paavo.bas | 432 +--------------------------- Games/Pomppu Paavo/img/1.i01 | 2 +- 2 files changed, 14 insertions(+), 420 deletions(-) diff --git a/Games/Pomppu Paavo/Pomppu Paavo.bas b/Games/Pomppu Paavo/Pomppu Paavo.bas index 92ccdd9..a026826 100755 --- a/Games/Pomppu Paavo/Pomppu Paavo.bas +++ b/Games/Pomppu Paavo/Pomppu Paavo.bas @@ -517,425 +517,21 @@ IF LivesRemaining% < 0 THEN END END SUB SUB DrawSprite (p, o, m, fr, teler) - -' Renders a sprite on screen based on predefined character patterns. -' -' How it works: -' The subroutine uses a lookup table (ao array) containing string representations -' of each sprite. Each character in these strings represents a pixel color. -' Depending on the parameters, it either: -' - Draws individual pixels (ScaleFactor=1) -' - Draws filled rectangles for each pixel (ScaleFactor>1 but not 50) -' - Draws flipped version of individual pixels (SpriteVariant=50) +' Renders a sprite on screen loaded from file "img/.i01" ' -' This flexible approach allows the same sprite data to be rendered at different -' sizes and orientations without storing multiple copies of the sprite data. - +' File format: First line = height (number of rows) +' Subsequent lines = strings of digit characters ('0'-'3') representing pixel colors +DIM rowText AS STRING +fileName$ = "img/" + LTRIM$(STR$(m)) + ".i01" +OPEN fileName$ FOR INPUT AS #1 +INPUT #1, height% DIM ao(1 TO 100) AS STRING -SELECT CASE m -CASE 1 ' Solid block pattern -ao(1) = "00000000000000000000" -ao(2) = "00111111111111111100" -ao(3) = "01222222222222222210" -ao(4) = "01233333333333333210" -ao(5) = "01232222222222223210" -ao(6) = "01232111111111123210" -ao(7) = "01232111111111123210" -ao(8) = "01232111111111123210" -ao(9) = "01232111111111123210" -ao(10) = "01232111111111123210" -ao(11) = "01232111111111123210" -ao(12) = "01232111111111123210" -ao(13) = "01232111111111123210" -ao(14) = "01232111111111123210" -ao(15) = "01232111111111123210" -ao(16) = "01232222222222223210" -ao(17) = "01233333333333333210" -ao(18) = "01222222222222222210" -ao(19) = "00111111111111111100" -ao(20) = "00000000000000000000" -CASE 2 ' Cloud sprite -ao(1) = "000000022200000222220000002222222200000000000222222000000000" -ao(2) = "000000022222002222222000222222222222000000222222222220000000" -ao(3) = "000000222222222222222202222222222222222222222222222222200000" -ao(4) = "000000222222222222222222222333333222220222222222222221110000" -ao(5) = "000000222222233333322222223333333322222222222222222221111000" -ao(6) = "000000022333333333333222233333333333222233322222222221111000" -ao(7) = "000002222333333333333322233333333333333333333222222221111100" -ao(8) = "000222222333333333333333333333333333333333333322222221111100" -ao(9) = "002222223333333333333333333333333333333333333333222221111100" -ao(10) = "022223333333333333333333333333333333333333333333222221111110" -ao(11) = "022233333333333333333333333333333333333333333333322222111110" -ao(12) = "222333333333333333333333333333333333333333333333322222111110" -ao(13) = "222333333333333333333333323333333323131113333333221221111110" -ao(14) = "223333333333333333333331112233331121111133333322112211111110" -ao(15) = "213333333333333333333331111133111111111111111112222111111110" -ao(16) = "111333313333333333333111111122111111111111111111221111111110" -ao(17) = "111333311111111333111111111111111111111111111111111111111100" -ao(18) = "011111111111111111111111111111111111111111111111111111111100" -ao(19) = "011111111111111111111111111111111111111111111111111111111100" -ao(20) = "011111111111111111111111111111111111111111111111111111111000" -ao(21) = "001111111111111111111111111111111111111111111111110111100000" -ao(22) = "001111111111111100111111111111111111111111111111100000000000" -ao(23) = "000111111111110000011111111111100011111111111111000000000000" -ao(24) = "000011111111100000000111111111000000011111111100000000000000" -ao(25) = "000001111110000000000001111110000000000000000000000000000000" -CASE 3 -ao(1) = "0000010000" -ao(2) = "0000010000" -ao(3) = "0000121000" -ao(4) = "0000131000" -ao(5) = "1111232111" -ao(6) = "0123333210" -ao(7) = "0123333210" -ao(8) = "0012332100" -ao(9) = "0001221000" -ao(10) = "0012112100" -ao(11) = "0121001210" -ao(12) = "0110000110" -ao(13) = "1100000011" -CASE 4 -ao(1) = "01111111110111111111" -ao(2) = "01222222210122222221" -ao(3) = "01233333210123333321" -ao(4) = "01233333210123333321" -ao(5) = "01233333210123333321" -ao(6) = "01233333210123333321" -ao(7) = "01233333210123333321" -ao(8) = "01222222210122222221" -ao(9) = "01111111110111111111" -ao(10) = "00000000000000000000" -ao(11) = "01111111110111111111" -ao(12) = "01222222210122222221" -ao(13) = "01233333210123333321" -ao(14) = "01233333210123333321" -ao(15) = "01233333210123333321" -ao(16) = "01233333210123333321" -ao(17) = "01233333210123333321" -ao(18) = "01222222210122222221" -ao(19) = "01111111110111111111" -ao(20) = "00000000000000000000" -CASE 5 -ao(1) = "0000333000" -ao(2) = "0033333300" -ao(3) = "0332222220" -ao(4) = "3322222222" -ao(5) = "3222111112" -ao(6) = "3111111111" -ao(7) = "1111111111" -CASE 6 -ao(1) = "00111100" -ao(2) = "01222210" -ao(3) = "12233221" -ao(4) = "12233221" -ao(5) = "12233221" -ao(6) = "12233221" -ao(7) = "12233221" -ao(8) = "12233221" -ao(9) = "01222210" -ao(10) = "00111100" -CASE 7 -ao(1) = "000000000000000033333300000000" -ao(2) = "000000000000000333333333000000" -ao(3) = "000000333300003332222222300000" -ao(4) = "000003333330333322232222220000" -ao(5) = "000033322333333222222222222000" -ao(6) = "003332222223332222322212222200" -ao(7) = "033222232222222222111211122200" -ao(8) = "033222222232111111111111112220" -ao(9) = "332223222111121121111111111222" -ao(10) = "322222111111111111121111111111" -CASE 8 -ao(1) = "0000000002222222000000000" -ao(2) = "0000000222111112220000000" -ao(3) = "0000002211131311122000000" -ao(4) = "0000022113331133112200000" -ao(5) = "0000022133331333312200000" -ao(6) = "0000221133331333311220000" -ao(7) = "0000221333331333331220000" -ao(8) = "0000221333331333331220000" -ao(9) = "0000221111111111111220000" -ao(10) = "0000221333331333331220000" -ao(11) = "0002211333331333331122000" -ao(12) = "0002213333331333333122000" -ao(13) = "0002213333331333333122000" -ao(14) = "0002213333331333333122000" -ao(15) = "0002213333331333333122000" -ao(16) = "0002213333331333333122000" -ao(17) = "0002213333331333333122000" -ao(18) = "0002211111111111111122000" -ao(19) = "2222222222222222222222222" -ao(20) = "0222222222222222222222220" -CASE 9 -ao(1) = "00000001112220000000" -ao(2) = "00001112222111120000" -ao(3) = "00112222111122221100" -ao(4) = "02222111122221111110" -ao(5) = "01111122221111122220" -ao(6) = "11122221111122221111" -ao(7) = "22221111122221111111" -ao(8) = "21111122221111112222" -ao(9) = "11222221111112222111" -ao(10) = "22221111112222111111" -CASE 10 -ao(1) = "33333333333333333333333333333333333333333333333333333333333333333333333333333333" -ao(2) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(3) = "30000110000111001110011111100011111110011111100000000000000000000000000000000003" -ao(4) = "30001111100111001110011111110011111110011111110000000000000000002222000000000003" -ao(5) = "30011001100011001100011100110011100110011100111000000000000000222222220000000003" -ao(6) = "30011000000011001100011111110011100000011100111000000000000000222222222222000003" -ao(7) = "30011000000011001100011111100011100110011111110000000000000000330330330002200003" -ao(8) = "30011111000011001100011100000011111110011111100000000000000000333333330000000003" -ao(9) = "30001111100011001100011100000011111110011100100000000000000000332222330000000003" -ao(10) = "30000001100011001100011100000011100000011100110000000000000000033333300000000003" -ao(11) = "30110001100011001100011100000011100110011100111000000000000030000111000000000003" -ao(12) = "30111011100011111100011100000011111110011100111000000000000331111111111000000003" -ao(13) = "30111111000001111000011100000011111110011100111000000000000331111111111100000003" -ao(14) = "30000000000000000000000000000000000000000000000000000000000000001111101100000003" -ao(15) = "30000000000000000000000000000000000000000000000000000000000000001111101100000003" -ao(16) = "30000000000000000000000000000000000000000000000000000000000000001101100000000003" -ao(17) = "30000000000000000000000000000000000000000000000000000000000000011101110000000003" -ao(18) = "30000000000000000000000000000000000000000000000000000000000000011101110000000003" -ao(19) = "30000000000000000000000000000000000000000000000000000000000000333303330000000003" -ao(20) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(21) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(22) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(23) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(24) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(25) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(26) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(27) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(28) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(29) = "30000000000000000000000000000000000000000000000000000000000000000000000000000003" -ao(30) = "33333333333333333333333333333333333333333333333333333333333333333333333333333333" -CASE 11 -ao(1) = "00000000000111111110000000000000000000000000000000" -ao(2) = "00000000011111111111000001100000000000000000000000" -ao(3) = "00000000111111111111110011110000000000000000000000" -ao(4) = "00000001101111111111111111111000000000000000000000" -ao(5) = "00000011111111111111111111111111000000000000000000" -ao(6) = "00000111111111111111111111111111000000000000000000" -ao(7) = "00000111111111111111111111111111001100000000000000" -ao(8) = "00000111111111111111111111111111111111100000000000" -ao(9) = "00000111111111111111111111111111111111100000000000" -ao(10) = "00000111111111111111111111111111111111110000000000" -ao(11) = "00000111111111111111111111111111111111111000000000" -ao(12) = "00000111111111111111111111111111111111111100000000" -ao(13) = "00000111111111111111111111111111111111111100000000" -ao(14) = "00000111111111111111111111111111111111111100000000" -ao(15) = "00000111111111111111111111111111111111111100000000" -ao(16) = "00000111111111111111111111111111111111111100000000" -ao(17) = "00011111111111111111111111111111111111111100000000" -ao(18) = "00011111111111111111111111111111111111111100000000" -ao(19) = "00111111110111111111111111111111111111111100000000" -ao(20) = "01110111111111111111111111111111111111111100000000" -ao(21) = "11111111111111111111111111111111111111111111100000" -ao(22) = "11111111111111111111111111111111111111111111100000" -ao(23) = "11111111111111111111111111111111111111111111100000" -ao(24) = "11111111111111111111111111111111111111111111100000" -ao(25) = "11111111111111111111111111111111111111111111111110" -ao(26) = "11111111111111111111111111111111111111111111110111" -ao(27) = "11111111111111111111111111111111111111111111111111" -ao(28) = "11011111111111111111111111111111111111111111111101" -ao(29) = "11111111111111111111111111111111111111111111111111" -ao(30) = "11111111111111111111111111111111111111111111111111" -ao(31) = "11111111111111111111111111111111111111111111111011" -ao(32) = "11111111111111111111111111111111111111111111111100" -ao(33) = "11111111111111111111111111111111111111111111111000" -ao(34) = "01111111111111111111111111111111111111111111110000" -ao(35) = "11111111111111111111111111111111111111111110110000" -ao(36) = "11111111111111111111111111111111111111111110110000" -ao(37) = "11111111111111111111111111111111111111111111110000" -ao(38) = "01111111111111111111111111111111111111111111110000" -ao(39) = "01111111111111111111111111111111111111111111110000" -ao(40) = "00011111111111111111111111111111111111111111100000" -ao(41) = "00111111111111111111111111111111111111111111100000" -ao(42) = "00011111111111111111111111111111111111111111110000" -ao(43) = "00001111111111111111111111111111111111111111110000" -ao(44) = "00001111111111111111111111111111111111111111111000" -ao(45) = "0000110111111111111111111111111111111111111111100" -ao(46) = "0000110011111111111111111111011111111111111100000" -ao(47) = "0000111101101111111111111111111111111110111000000" -ao(48) = "0000000000001111111111111111111111111111110000000" -ao(49) = "0000000000000001111111111111111111110111110000000" -ao(50) = "0000000000000000000011111111111111100111110000000" -ao(51) = "0000000000000000000001111020111000000000000000000" -ao(52) = "0000000000000000000001111222200000000000000000000" -ao(53) = "0000000000000000000000222222220000000000000000000" -ao(54) = "0000000000000000000000222222020000000000000000000" -ao(55) = "0000000000000000000000202222220000000000000000000" -ao(56) = "0000000000000000000000222222220000000000000000000" -ao(57) = "0000000000000000000000220202220000000000000000000" -ao(58) = "0000000000000000000000222222220000000000000000000" -ao(59) = "0000000000000000000000202222220000000000000000000" -ao(60) = "0000000000000000000000222222220000000000000000000" -ao(61) = "000000000000000000000022022220000000000" -ao(62) = "0000000000000000000000222222220000000000000000000" -ao(63) = "0000000000000000000000220222200000000000000000000" -ao(64) = "0000000000000000000000222220200000000000000000000" -ao(65) = "0000000000000000000000220222200000000000000000000" -ao(66) = "0000000000000000000000222222200000000000000000000" -ao(67) = "0000000000000000000000222222200000000000000000000" -ao(68) = "0000000000000000000000202222000000000000000000000" -ao(69) = "0000000000000000002000222222220000000000000000000" -ao(70) = "0000000000000000002200222222000000000000000000000" -ao(71) = "0000000000000000000222222222000000000000000000000" -ao(72) = "0000000000000000000222222222000000000000000000000" -ao(73) = "0000000000000000000022222222000000000000000000000" -ao(74) = "0000000000000000000022222222000000000000000000000" -ao(75) = "0000000000000000000020222222000000000000000000000" -ao(76) = "0000000000000000000222222202000000000000000000000" -ao(77) = "000000000000000000022022222200000000000" -ao(78) = "0000000000000000022222222222200000000000000000000" -ao(79) = "0000000000000000220222222222220000" -ao(80) = "000000000000000022222222222222" -CASE 12 -ao(1) = "11111111111111111111" -ao(2) = "11111111111111111111" -ao(3) = "11111111112111111111" -ao(4) = "11111111112211111111" -ao(5) = "11111111112221111111" -ao(6) = "11111111112222111111" -ao(7) = "11111111112222211111" -ao(8) = "11122222222222221111" -ao(9) = "11122222222222222111" -ao(10) = "11122222222222222211" -ao(11) = "11122222222222222211" -ao(12) = "11122222222222222111" -ao(13) = "11122222222222221111" -ao(14) = "11111111112222211111" -ao(15) = "11111111112222111111" -ao(16) = "11111111112221111111" -ao(17) = "11111111112211111111" -ao(18) = "11111111112111111111" -ao(19) = "11111111111111111111" -ao(20) = "11111111111111111111" -CASE 13 -ao(1) = "03333333333333333330" -ao(2) = "33333333222233333333" -ao(3) = "33333332222223333333" -ao(4) = "33333332222223333333" -ao(5) = "33333332222223333333" -ao(6) = "33333332222223333333" -ao(7) = "33333332222223333333" -ao(8) = "33333332222223333333" -ao(9) = "33333332222223333333" -ao(10) = "33333332222223333333" -ao(11) = "33333333222233333333" -ao(12) = "33333333333333333333" -ao(13) = "33333333333333333333" -ao(14) = "33333333222233333333" -ao(15) = "33333332222223333333" -ao(16) = "33333332222223333333" -ao(17) = "33333332222223333333" -ao(18) = "33333333222233333333" -ao(19) = "33333333333333333333" -ao(20) = "03333333333333333330" -CASE 14 - -ao(1) = "00000000022220000000" -ao(2) = "00000000022220000000" -ao(3) = "00000000022222000000" -ao(4) = "00000000033333000000" -ao(5) = "00000000033333300000" -ao(6) = "00000000033333300000" -ao(7) = "00000000003333000000" -ao(8) = "00000000011100000000" -ao(9) = "00000003111130000000" -ao(10) = "00000003111130000000" -ao(11) = "00000003111130000000" -ao(12) = "00000003111133000000" -ao(13) = "00000003111130000000" -ao(14) = "00000003111130000000" -ao(15) = "00000000333300000000" -ao(16) = "00000000333300000000" -ao(17) = "00000003303300000000" -ao(18) = "00000003303300000000" -ao(19) = "00000033302220000000" -ao(20) = "00000022200000000000" - - -CASE 15 -ao(1) = "00000000022220000000" -ao(2) = "00000000022220000000" -ao(3) = "00000000022222000000" -ao(4) = "00000000033333000000" -ao(5) = "00000000033333300000" -ao(6) = "00000000033333300000" -ao(7) = "00000000003333000000" -ao(8) = "00000000011100000000" -ao(9) = "00000003111130000000" -ao(10) = "00000003111130000000" -ao(11) = "00000003111130000000" -ao(12) = "00000033111130000000" -ao(13) = "00000003111130000000" -ao(14) = "00000003111130000000" -ao(15) = "00000000333300000000" -ao(16) = "00000000333300000000" -ao(17) = "00000000330330000000" -ao(18) = "00000000330330000000" -ao(19) = "00000002220333000000" -ao(20) = "00000000000222000000" - -CASE 16 - -ao(1) = "00000000022220000000" -ao(2) = "00000000022220000000" -ao(3) = "00000000022222000000" -ao(4) = "00000000033333000000" -ao(5) = "00000000033333300000" -ao(6) = "00000000033333300000" -ao(7) = "00000000103330100000" -ao(8) = "00000001111111000000" -ao(9) = "00000000311130000000" -ao(10) = "00000000311130000000" -ao(11) = "00000000311130000000" -ao(12) = "00000000311130000000" -ao(13) = "00000000311130000000" -ao(14) = "00000000311130000000" -ao(15) = "00000000333300000000" -ao(16) = "00000000333300000000" -ao(17) = "00000000330330000000" -ao(18) = "00000000330330000000" -ao(19) = "00000000330330000000" -ao(20) = "00000000222222000000" - -CASE 17 ' Door sprite -ao(1) = "00000022222222000000" -ao(2) = "00002222222222220000" -ao(3) = "00022220000000222000" -ao(4) = "00020002222222002000" -ao(5) = "00202222222222222200" -ao(6) = "00202222222222220200" -ao(7) = "00202222222222220200" -ao(8) = "02202222222222220220" -ao(9) = "02022222222222220220" -ao(10) = "02022323232323322020" -ao(11) = "02022323232323222020" -ao(12) = "02022323233223332020" -ao(13) = "22022323232322232022" -ao(14) = "20222323232322232202" -ao(15) = "20222232232323332202" -ao(16) = "20222222222222222202" -ao(17) = "20222222222222112202" -ao(18) = "20222222222222112202" -ao(19) = "20222222222222112202" -ao(20) = "20222222222222222202" -ao(21) = "20222222222222222202" -ao(22) = "20222222222222222202" -ao(23) = "20222222222222222202" -ao(24) = "20222222222222222202" -ao(25) = "20222222222222222202" -ao(26) = "20222222222222222202" -ao(27) = "20222222222222222202" -ao(28) = "20222222222222222202" -ao(29) = "20000000000000000002" -ao(30) = "22222222222222222222" - -END SELECT +FOR a = 1 TO height% +LINE INPUT #1, ao(a) +NEXT a +CLOSE #1 IF fr = 50 THEN GOTO DrawFlippedSprite IF fr > 1 THEN GOTO DrawScaledSprite - FOR a = 1 TO 100 ' Normal sprite IF ao(a) = "" THEN GOTO FinishDrawing FOR b = 1 TO LEN(ao(a)) @@ -943,7 +539,6 @@ PSET ((p + b) \ teler, (o + a) \ teler), ASC(RIGHT$(LEFT$(ao(a), b), 1)) - 48 NEXT b NEXT a GOTO FinishDrawing - DrawScaledSprite: ' Scaled sprite FOR a = 1 TO 100 IF ao(a) = "" THEN GOTO FinishDrawing @@ -953,15 +548,13 @@ LINE (p + (b * fr), o + (a * fr))-(p + (b * fr) + fr, o + (a * fr) + fr), c, BF NEXT b NEXT a GOTO FinishDrawing - DrawFlippedSprite: ' Horizontally flipped sprite FOR a = 1 TO 100 IF ao(a) = "" THEN GOTO FinishDrawing FOR b = 1 TO LEN(ao(a)) -PSET ((p + b) \ teler, (o + a) \ teler), ASC(LEFT$(RIGHT$(ao(a), b), 1)) - 48 +PSET ((p + (LEN(ao(a)) - b + 1)) \ teler, (o + a) \ teler), ASC(RIGHT$(LEFT$(ao(a), b), 1)) - 48 NEXT b NEXT a - FinishDrawing: ERASE ao END SUB @@ -1010,6 +603,7 @@ asciiLevelData(7) = "m h mmmmoom" asciiLevelData(8) = " mm h m" asciiLevelData(9) = " v mmm mm" asciiLevelData(10) = "mmmmmmmmmmmmmmmm" +graphicsMode = 1 CASE 3 asciiLevelData(1) = "mmmmmmmmmmmmmmmm" asciiLevelData(2) = " h h h h h ym11" diff --git a/Games/Pomppu Paavo/img/1.i01 b/Games/Pomppu Paavo/img/1.i01 index 8f80574..e2d8642 100644 --- a/Games/Pomppu Paavo/img/1.i01 +++ b/Games/Pomppu Paavo/img/1.i01 @@ -1,4 +1,4 @@ - 20 +20 00000000000000000000 00111111111111111100 01222222222222222210 -- 2.20.1