├── LICENSE ├── README.md ├── fillwithsand ├── editor.lua ├── fws.code-workspace ├── fws.p8 ├── fws.p8.png ├── fws1.p8.png ├── fws2.p8.png ├── fws3.p8.png ├── game.lua ├── globals.lua ├── levels.lua ├── menu.lua ├── simulation.lua └── tech.txt └── picooffroad ├── game ├── car_mesh_compressed.lua ├── car_rendering.lua ├── cars.lua ├── debug.lua ├── drawing.lua ├── game.lua ├── game_states.lua ├── game_ui.lua ├── lz77_decompressor.lua ├── math.lua ├── picooffroad.p8 ├── racing_maps.lua ├── rendering.lua ├── results.lua ├── shadows.lua ├── sprite_map.lua ├── tile_map.lua ├── trophy.lua └── ui.lua └── work ├── bitmaps ├── PicoOffRoadCar.png ├── PicoOffRoadTitle.png ├── PicoOffRoad_cover.png └── trophy.aseprite ├── car_mesh ├── Pico8ObjToLua │ ├── bin │ │ ├── low_poly_car.obj │ │ └── out.lua │ ├── clean.bat │ ├── project │ │ ├── vs2013 │ │ │ ├── Pico8ObjToLua.sln │ │ │ ├── Pico8ObjToLua.vcxproj │ │ │ └── Pico8ObjToLua.vcxproj.filters │ │ └── vs2015 │ │ │ ├── Pico8ObjToLua.sln │ │ │ ├── Pico8ObjToLua.vcxproj │ │ │ ├── Pico8ObjToLua.vcxproj.filters │ │ │ └── Pico8ObjToLua.vcxproj.user │ ├── src │ │ └── main.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── car_mesh.lua ├── car_mesh.p8 ├── car_mesh_converter.lua ├── low_poly_car.blend ├── low_poly_car.obj └── readme.txt └── tracks ├── Pico8RacingMapPacker ├── bin │ ├── TemplateConsole.exe │ ├── TemplateConsole_x64.exe │ ├── compressed_map.txt │ ├── dump.txt │ ├── pico8chars.utf8 │ ├── racing_map01.txt │ ├── racing_map_empty_32x64.txt │ └── racing_map_empty_64x64.txt ├── clean.bat ├── project │ ├── vs2013 │ │ ├── Pico8RacingMapPacker.sln │ │ ├── Pico8RacingMapPacker.vcxproj │ │ └── Pico8RacingMapPacker.vcxproj.filters │ └── vs2015 │ │ ├── Pico8RacingMapPacker.sln │ │ ├── Pico8RacingMapPacker.vcxproj │ │ ├── Pico8RacingMapPacker.vcxproj.filters │ │ └── Pico8RacingMapPacker.vcxproj.user ├── src │ └── main.cpp ├── stdafx.cpp └── stdafx.h ├── racing_map01.txt ├── racing_map02.txt ├── racing_map03.txt └── readme.txt /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pico8 2 | Pico8 games and tools 3 | -------------------------------------------------------------------------------- /fillwithsand/editor.lua: -------------------------------------------------------------------------------- 1 | grid={} 2 | cursor={32,32} 3 | material_index=6 4 | cursor_size=2 5 | blink=0 6 | menu_mode=false 7 | run_timer=0 8 | total_run_timer=30 9 | fill_pattern={0b1001001101101100.100,0b0011011011001001.100,0b0110110010010011.100,0b1100100100110110.100} 10 | pattern_index=1 11 | pattern_timer=0 12 | edited_level=0 13 | 14 | min_edit_x=1 15 | max_edit_x=62 16 | min_edit_y=1 17 | max_edit_y=42 18 | avoid={} 19 | 20 | input_delay_frames=5 21 | input_timer=input_delay_frames 22 | 23 | function contains (tab, val) 24 | for index, value in ipairs(tab) do 25 | if(value == val)return true 26 | end 27 | end 28 | 29 | function init_editor() 30 | if level!=edited_level then 31 | new_level() 32 | edited_level=level 33 | local l=levels[level] 34 | min_edit_x=flr(l.minx/2) 35 | min_edit_y=flr(l.miny/2) 36 | max_edit_x=flr(l.maxx/2) 37 | max_edit_y=flr(l.maxy/2) 38 | if l.avoid~=nil then 39 | avoid=l.avoid 40 | else 41 | avoid={} 42 | end 43 | 44 | while contains(avoid,materials[material_index]) do 45 | material_index=material_index%#materials+1 46 | end 47 | end 48 | end 49 | function update_editor() 50 | if btnp(4) then 51 | menu_mode=not menu_mode 52 | end 53 | if menu_mode then 54 | update_editor_menu() 55 | else 56 | update_editor_paint() 57 | end 58 | end 59 | function update_editor_menu() 60 | if btnp(0) then 61 | repeat 62 | material_index=(material_index+#materials-2)%#materials+1 63 | until not contains(avoid,materials[material_index]) 64 | end 65 | if btnp(1) then 66 | repeat 67 | material_index=material_index%#materials+1 68 | until not contains(avoid,materials[material_index]) 69 | end 70 | 71 | if btnp(2) then 72 | cursor_size=cursor_size%4+1 73 | end 74 | if btnp(3) then 75 | cursor_size=(cursor_size+4-2)%4+1 76 | end 77 | if btn(5) then 78 | run_timer+=1 79 | if run_timer>=total_run_timer then 80 | --RUN SIMULATION 81 | menu_mode=false 82 | run_timer=0 83 | state=3 84 | draw_level(false) 85 | return 86 | end 87 | else 88 | run_timer=0 89 | end 90 | end 91 | function update_editor_paint() 92 | if btn(0) and input_timer<=0 or btnp(0) then 93 | cursor[1]-=1 94 | end 95 | if btn(1) and input_timer<=0 or btnp(1) then 96 | cursor[1]+=1 97 | end 98 | if btn(2) and input_timer<=0 or btnp(2) then 99 | cursor[2]-=1 100 | end 101 | if btn(3) and input_timer<=0 or btnp(3) then 102 | cursor[2]+=1 103 | end 104 | 105 | if btn(0) or btn(1) or btn(2) or btn(3) then 106 | input_timer-=1 107 | else 108 | input_timer=input_delay_frames 109 | end 110 | 111 | if cursor[1](max_edit_x+1-cursor_size) then 115 | cursor[1]=max_edit_x+1-cursor_size 116 | end 117 | if cursor[2](max_edit_y+1-cursor_size) then 121 | cursor[2]=max_edit_y+1-cursor_size 122 | end 123 | 124 | if btn(5) then 125 | for y=0,cursor_size-1 do 126 | for x=0,cursor_size-1 do 127 | grid[cursor[1]+x+(cursor[2]+y)*64]=materials[material_index] 128 | end 129 | end 130 | end 131 | end 132 | function draw_editor() 133 | draw_level(true) 134 | 135 | fillp(fill_pattern[pattern_index]) 136 | rect(min_edit_x*2-1,min_edit_y*2-1,max_edit_x*2+2,max_edit_y*2+2,3) 137 | fillp() 138 | 139 | pattern_timer=(pattern_timer+1)%4 140 | if(pattern_timer==0)pattern_index=pattern_index%#fill_pattern+1 141 | 142 | if menu_mode then 143 | -- menu 144 | local y=24 145 | rectfill(16,y,111,y+57,1) 146 | rect(16,y,111,y+57,3) 147 | 148 | -- materials 149 | local x=31 150 | y+=6 151 | printo("\x8b",x,y,3,0) 152 | printo("\x91",x+58,y,3,0) 153 | for i=1,#materials do 154 | rectfill(x+1+i*7,y-1,x+7+i*7,y+5,0) 155 | rectfill(x+2+i*7,y,x+6+i*7,y+4,band(materials[i],0xf)) 156 | if contains(avoid,materials[i]) then 157 | line(x+1+i*7,y-1,x+7+i*7,y+5,3) 158 | line(x+1+i*7,y+5,x+7+i*7,y-1,3) 159 | end 160 | if materials[material_index]==materials[i] then 161 | rect(x+1+i*7,y-1,x+7+i*7,y+5,3) 162 | end 163 | end 164 | y+=8 165 | printo("material:",x,y,3,0) 166 | print_mname(materials[material_index],x+36,y) 167 | 168 | -- brush 169 | y+=12 170 | printo("\x83",x,y,3,0) 171 | printo("\x94",x+20,y,3,0) 172 | rectfill(x+14-cursor_size,y+2-cursor_size,x+14+cursor_size-1,y+2+cursor_size-1,0) 173 | y+=8 174 | printo("brush:"..cursor_size.."X"..cursor_size,x,y,3,0) 175 | 176 | -- controls 177 | y+=12 178 | printo("\x8e close",x,y,6,0) 179 | printo("\x97 run!",x+39,y,0xc,0) 180 | if run_timer>0 then 181 | rectfill(17,y+7,17+(110-17)*run_timer/total_run_timer,y+10,0xc) 182 | rect(17,y+7,17+(110-17)*run_timer/total_run_timer,y+10,0) 183 | end 184 | else 185 | -- cursor 186 | local cx=cursor[1]*2-1 187 | local cy=cursor[2]*2-1 188 | local dx=cx+1+2*cursor_size 189 | local dy=cy+1+2*cursor_size 190 | if blink<8 then 191 | rect(cx,cy,dx,dy,band(materials[material_index],0xf)) 192 | end 193 | pset(cx,cy,3) 194 | pset(cx,dy,3) 195 | pset(dx,cy,3) 196 | pset(dx,dy,3) 197 | 198 | -- controls 199 | print("\x97 paint",1,120,3) 200 | print("\x8e menu",100,120,3) 201 | end 202 | 203 | if(levels[level].tip!=nil) print(levels[level].tip,1,113,1) 204 | print("level:"..level,48,120,0xe) 205 | 206 | blink=(blink+1)%16 207 | end 208 | function draw_level(show_goal) 209 | cls(0) 210 | -- grid 211 | for y=0,55 do 212 | for x=0,63 do 213 | local adr=0x6000+x+y*128 214 | local mat=grid[x+y*64] 215 | poke(adr,mat) 216 | poke(adr+64,mat) 217 | end 218 | end 219 | -- border 220 | rectfill(0,0,127,1,1) 221 | rectfill(0,0,1,111,1) 222 | rectfill(126,0,127,111,1) 223 | rectfill(0,110,127,111,1) 224 | -- level 225 | levels[level].d(show_goal) 226 | end 227 | function new_level() 228 | for y=0,55 do 229 | for x=0,63 do 230 | grid[x+y*64]=0 231 | end 232 | end 233 | end 234 | -------------------------------------------------------------------------------- /fillwithsand/fws.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ] 7 | } -------------------------------------------------------------------------------- /fillwithsand/fws.p8: -------------------------------------------------------------------------------- 1 | pico-8 cartridge // http://www.pico-8.com 2 | version 38 3 | __lua__ 4 | #include globals.lua 5 | #include levels.lua 6 | #include menu.lua 7 | #include editor.lua 8 | #include game.lua 9 | #include simulation.lua 10 | states={ 11 | {i=init_menu,u=update_menu,d=draw_menu}, 12 | {i=init_editor,u=update_editor,d=draw_editor}, 13 | {i=init_game,u=update_game,d=draw_game} 14 | } 15 | function _init() 16 | pal({5,4,7,140,140,11,15,8,137,10,9,8,137,10,9},1) 17 | cls(0) 18 | init_menu() 19 | init_simulation() 20 | init_editor() 21 | end 22 | function _update() 23 | local s=state 24 | states[state].u() 25 | if(simulation_running) update_simulation() 26 | if s!=state then 27 | states[state].i() 28 | end 29 | end 30 | function _draw() 31 | states[state].d() 32 | end 33 | __gfx__ 34 | 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 35 | 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 36 | 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 37 | 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 38 | 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 39 | 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 40 | -------------------------------------------------------------------------------- /fillwithsand/fws.p8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/fillwithsand/fws.p8.png -------------------------------------------------------------------------------- /fillwithsand/fws1.p8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/fillwithsand/fws1.p8.png -------------------------------------------------------------------------------- /fillwithsand/fws2.p8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/fillwithsand/fws2.p8.png -------------------------------------------------------------------------------- /fillwithsand/fws3.p8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/fillwithsand/fws3.p8.png -------------------------------------------------------------------------------- /fillwithsand/game.lua: -------------------------------------------------------------------------------- 1 | win=false 2 | complete=0 3 | 4 | function count_cells(x1,y1,x2,y2,mat) 5 | local count=0 6 | if mat==0x44 then 7 | for y=y1,y2 do 8 | for x=x1,x2 do 9 | if(band(peek(0x6000+x+128*y),0xee)==0x44)count+=1 --water has 2 states 10 | end 11 | end 12 | else 13 | for y=y1,y2 do 14 | for x=x1,x2 do 15 | if(peek(0x6000+x+128*y)==mat)count+=1 16 | end 17 | end 18 | end 19 | return count 20 | end 21 | 22 | function init_game() 23 | win=false 24 | complete=0 25 | run_simulation() 26 | end 27 | 28 | function update_game() 29 | if btnp(4) then 30 | if win then 31 | level+=1 32 | if level>#levels then 33 | --ALL LEVELS WON 34 | level=1 35 | end 36 | end 37 | stop_simulation() 38 | state=2 39 | end 40 | 41 | local l=levels[level] 42 | local count=count_cells(l.x1\2,l.y1\2,l.x2\2,l.y2\2,l.m) 43 | local total_count=(l.x2\2-l.x1\2+1)*(l.y2\2-l.y1\2+1) 44 | 45 | if count==total_count then 46 | win=true 47 | stop_simulation() 48 | end 49 | 50 | complete=flr(100*count/total_count) 51 | if(count#levels)level=1 21 | 22 | if btnp(4) then 23 | stop_simulation() 24 | state=2 25 | end 26 | end 27 | function draw_menu() 28 | rectfill(0,112,127,127,0) 29 | print("\x8b level:"..level.." \x91",3,120,0xe) 30 | print("\x8e start",94,120,3) 31 | end 32 | -------------------------------------------------------------------------------- /fillwithsand/simulation.lua: -------------------------------------------------------------------------------- 1 | -- grid size: 64x56 2 | --step=0 3 | 4 | function init_simulation() 5 | local adr = 0x1000 6 | 7 | -- fill 8 | local w = 0 9 | for y=1,55 do 10 | for x=1,62 do 11 | poke2(adr+w,bor(x,shl(y,7))) -- shl 7 because it must be every second row 12 | w+=2 13 | end 14 | end 15 | 16 | -- deterministic shuffle 17 | srand(17) 18 | for i=0,62*55-1 do 19 | local target = adr+flr(rnd(62*55))*2 20 | local tmp = peek2(adr+i*2) 21 | poke2(adr+i*2,peek2(target)) 22 | poke2(target,tmp) 23 | end 24 | end 25 | 26 | function update_simulation() 27 | local dir4={[0]=1,128,-1,-128} 28 | local stp=step 29 | local r=flr(rnd(0xffff)) 30 | 31 | local val,dir,tgt 32 | for i=0,62*55-1 do 33 | local adr=0x6000+peek2(0x1000+i*2) 34 | local mat=peek(adr) 35 | 36 | if band(mat,0xf)>3 then -- except wall 37 | --water 38 | if band(mat,0xee)==0x44 then 39 | val=peek(adr+128) 40 | if val==0 then --down 41 | poke(adr,0) 42 | poke(adr+64,0) 43 | poke(adr+128,mat) 44 | poke(adr+192,mat) 45 | else 46 | dir=band(mat,1) 47 | if dir==0 then --left down 48 | val=peek(adr+127) 49 | if val==0 then 50 | poke(adr,0) 51 | poke(adr+64,0) 52 | poke(adr+127,mat) 53 | poke(adr+191,mat) 54 | else 55 | val=peek(adr-1) 56 | if val==0 then --left 57 | poke(adr,0) 58 | poke(adr+64,0) 59 | poke(adr-1,mat) 60 | poke(adr+63,mat) 61 | else 62 | poke(adr,0x55) --change from left to right water 63 | end 64 | end 65 | else 66 | val=peek(adr+129) 67 | if val==0 then --right down 68 | poke(adr,0) 69 | poke(adr+64,0) 70 | poke(adr+129,mat) 71 | poke(adr+193,mat) 72 | else 73 | val=peek(adr+1) 74 | if val==0 then --right 75 | poke(adr,0) 76 | poke(adr+64,0) 77 | poke(adr+1,mat) 78 | poke(adr+65,mat) 79 | else 80 | poke(adr,0x44) --change from right to left water 81 | end 82 | end 83 | end 84 | end 85 | --plant 86 | elseif mat==0x66 then 87 | tgt=adr+dir4[band(i+stp+r,3)] 88 | val=peek(tgt) 89 | if band(val,0xee)==0x44 then --it's water -> grow 90 | poke(tgt,mat) 91 | poke(tgt+64,mat) 92 | end 93 | --sand 94 | elseif mat==0x77 then 95 | val=peek(adr+128) 96 | if val==0 or band(val,0xee)==0x44 then --down 97 | poke(adr,val) 98 | poke(adr+64,val) 99 | poke(adr+128,mat) 100 | poke(adr+192,mat) 101 | else 102 | dir=band(i+stp+r,1) 103 | if dir==0 then --left down 104 | val=peek(adr+127) 105 | if val==0 or band(val,0xee)==0x44 then 106 | poke(adr,val) 107 | poke(adr+64,val) 108 | poke(adr+127,mat) 109 | poke(adr+191,mat) 110 | end 111 | else 112 | val=peek(adr+129) 113 | if val==0 or band(val,0xee)==0x44 then --right down 114 | poke(adr,val) 115 | poke(adr+64,val) 116 | poke(adr+129,mat) 117 | poke(adr+193,mat) 118 | end 119 | end 120 | end 121 | --slow burn 122 | elseif mat>=0x88 and mat<=0xbb then 123 | if stp==0 then --slow 124 | tgt=adr+dir4[band(i+mat,3)] 125 | val=peek(tgt) 126 | if val==0x22 then --spread to wood 127 | poke(tgt,0x88) 128 | poke(tgt+64,0x88) 129 | elseif val==0x66 then --spread to plant 130 | poke(tgt,0xcc) 131 | poke(tgt+64,0xcc) 132 | end 133 | 134 | if mat==0xbb then 135 | mat=0 136 | else 137 | mat+=0x11 138 | end 139 | poke(adr,mat) 140 | poke(adr+64,mat) 141 | end 142 | --fast burn 143 | elseif mat>=0xcc and mat<=0xff then 144 | tgt=adr+dir4[band(i+mat,3)] 145 | val=peek(tgt) 146 | if val==0x22 then --spread to wood 147 | poke(tgt,0x88) 148 | poke(tgt+64,0x88) 149 | elseif val==0x66 then --spread to plant 150 | poke(tgt,0xcc) 151 | poke(tgt+64,0xcc) 152 | end 153 | 154 | if mat==0xff then 155 | mat=0 156 | else 157 | mat+=0x11 158 | end 159 | poke(adr,mat) 160 | poke(adr+64,mat) 161 | end 162 | end 163 | end 164 | 165 | step=band(step+1,0xf) 166 | end 167 | -------------------------------------------------------------------------------- /fillwithsand/tech.txt: -------------------------------------------------------------------------------- 1 | 2 | Simulation grid: 3 | 64x55 quad pixels 4 | - top row and bottom row is not simulated, just read, there is always concrete (to avoid uneccessary boundary checks) 5 | - also left border and right border are concrete, to avoid carry over boundary 6 | 7 | Memory: 8 | 0x1000 .. 0x2aa4 = 62x55x2 shuffled coordinates of all simulated pixels on screen (64x48 except boundaries) 9 | 10 | Materials: 11 | Materials Color Index Simulation 12 | --------------------------------------------------- 13 | void - 0 - 0 - no simulation, not blocking 14 | wall - 5 - 1 - no simualtion, blocking everything, indestructible 15 | wood - 4 - 2 - no simulation, blocking everything, slow burn 16 | --- - 7 - 3 - unused, white texts 17 | water-left - 12/140 - 4 - liquid, not blocking, flows to left 18 | water-right - 12/148 - 5 - liquid, not blocking, flows to right 19 | plant - 11 - 6 - grow in water in all directions, blocking everything, fast burn 20 | sand - 15 - 7 - loose, blocking everything 21 | burning wood - 8,8,8,8 - 8,9,a,b - slow burn 22 | burning plant - 8,8,8,8 - c,d,e,f - fast burn 23 | 24 | {5,4,7,12,12,3,15,8,9,8,9,8,9,8,9} -------------------------------------------------------------------------------- /picooffroad/game/car_mesh_compressed.lua: -------------------------------------------------------------------------------- 1 | car_min,car_vscale=-2.1209,0.0215 2 | car_verticesc=[[^}○^●xe☉xp◆○g◆xe∧x^く○^▥x:∧x/◆○7◆x:☉xk🐱x^}xp◆xkうx^くx4うx/◆x4🐱xンqへ◝…も(vも$●ほンq웃◝…⬇️(v⬇️$✽☉w★⬇️znふzn웃w★もやq⬇️や★もや★⬇️やqもや?ひ⌂_ぬ⌂_🅾️や?⌂◝q⬇️◝qもる}웃ン}웃ン}へる}へ ✽🅾️ x🅾️ xね ✽ねwq⬇️wqも♪?⌂♪?ひ(★⬇️(★も ✽➡️ |➡️ |と ✽と ★🅾️ ★ね^}ら^●んp◆らe☉んg◆ん^くらe∧ん^▥ん/◆ら:∧ん7◆ん:☉んk🐱ん^}んp◆んkうん^くん4うん/◆ん4🐱んコ}らコ●んフ◆らチ☉んト◆んコくらチ∧んコ▥んれ◆らウ∧んア◆んウ☉んヌ🐱んコ}んフ◆んヌうんコくんっうんれ◆んっ🐱んコ}○コ●xチ☉xフ◆○ト◆xチ∧xコく○コ▥xウ∧xれ◆○ア◆xウ☉xヌ🐱xコ}xフ◆xヌうxコくxっうxれ◆xっ🐱xゆeへゆ^へゆe☉ゆ^☉りiにわdにりi◆わd◆チv☉シ{◆チvにチvへシ{にチv◆テ★もテ★⬇️^★⬇️^★もスrへスrにエsへエrにシq◆シq☉ウr☉イq◆]] 3 | car_trianglesc=[[o6p+dra+8fe+4`f+:m6+>p=+bqc+=rb+>qo+a`@+a@d+@8e+o:6+dqr+84f+:lm+>op+brq+=pr+>cq+ ,- #, #/. &/# &10 )1& )32 3) !," ,$" $/% /'% '1( 1*( *3+ 3!+ =c> `rp @qd hji wux {♥} }♥웃 }⌂█ █⌂⬅️ █😐⬇️ ⬇️😐♪ ⬇️🅾️{ {🅾️☉ ~☉| ○♥~ ○⌂웃 🐱⌂▒ 🐱😐⬅️ ✽😐░ ✽🅾️♪ |🅾️● ◆い➡️ ➡️いえ ➡️お⬆️ ⬆️おか ⬆️き❎ ❎きく ❎け◆ ◆けう ★う… ⧗い★ ⧗おえ ∧おˇ ∧きか ▥き▤ あく▥ …けあ こにぬ すにこ すのね たのす たひは てひた てへふ こへて さにし にせし せのそ のちそ ちひつ つふと ふなと へさな #., &0/ )21 -3 !-, ,.$ $./ /0' '01 12* *23 3-! =bc `ar @oq hgj wvu {☉♥ }웃⌂ █⬅️😐 ⬇️♪🅾️ ~♥☉ ○웃♥ ○▒⌂ 🐱⬅️⌂ 🐱░😐 ✽♪😐 ✽●🅾️ |☉🅾️ ◆うい ➡️えお ⬆️かき ❎くけ ★いう ⧗えい ⧗ˇお ∧かお ∧▤き ▥くき あけく …うけ すねに たはの てふひ こぬへ さぬに にねせ せねの のはち ちはひ つひふ ふへな へぬさ 7mn';l:'ゆウむ'ゆまも'もゃゅ'ゅるり'ウろよ'76m';kl'ゆイウ'ゆむま'もまゃ'ゅゃる'ウイろ'をe9#っ6t#e59#^p?#んo<#`g@#わ`^#o_<#8i4#8gh#;:s#67t#7zt#;yk#vlk#xzn#wlv#uzx#4j`#5fわ#@を_#s:ん#?pっ#6っp#ん:o#ef5#^`p#`jg#わf`#o@_#8hi#8@g#7nz#;sy#yuk#uvk#mwn#wxn#wml#uyz#4ij#@eを#$'*&🐱▒○&∧ˇ⧗&せちと&ゆめや&もアめ&むエみ&ゆオイ&まょゃ&ゅれア&イらろ&!"$&$%'&'(*&*+!&!$*&○~|&|●○&●✽○&✽░○&░🐱○&⧗★▥&★…▥&…あ▥&▥▤⧗&▤∧⧗&さしせ&せそち&ちつと&となさ&させと&ゆもめ&もゅア&むウエ&ゆやオ&まほょ&ゅりれ&イオら&]] 4 | 5 | function car_mesh_init() 6 | car_vertices={} 7 | for i=1,#car_verticesc,3 do 8 | add(car_vertices,{x=car_min+car_vscale*decode_v(car_verticesc,i),y=car_min+car_vscale*decode_v(car_verticesc,i+1),z=car_min+car_vscale*decode_v(car_verticesc,i+2)}) 9 | end 10 | 11 | car_triangles={} 12 | for i=1,#car_trianglesc do 13 | add(car_triangles,decode_v(car_trianglesc,i)+1) 14 | end 15 | end 16 | 17 | function decode_v(arr,i) 18 | local v=ord(arr,i)-32 19 | if v>=62 then 20 | v-=29 21 | end 22 | return v 23 | end -------------------------------------------------------------------------------- /picooffroad/game/car_rendering.lua: -------------------------------------------------------------------------------- 1 | presorted_count=16 2 | 3 | function car_rendering_init() 4 | transformed_vertices={} 5 | projected_vertices={} 6 | sorted_triangles={} 7 | 8 | for i=0,presorted_count-1 do 9 | local yaw=(i+0.5)*pi2/presorted_count 10 | car_transform(car_vertices, transformed_vertices, yaw,0,0,1) 11 | 12 | local triangles=cull_triangles(transformed_vertices,car_triangles,-0.5,0.5,1) 13 | sort_triangles(transformed_vertices,triangles) 14 | add(sorted_triangles,triangles) 15 | end 16 | end 17 | 18 | function car_draw(pos_x,pos_y,yaw,pitch,roll,scale) 19 | car_transform(car_vertices, transformed_vertices, yaw,pitch,roll,scale) 20 | project_vertices(transformed_vertices,projected_vertices,pos_x,pos_y) 21 | 22 | local yaw_index=flr((yaw+0.3*abs(pitch)+abs(roll)*0.2)/pi2*presorted_count)%presorted_count+1 23 | draw_triangles(projected_vertices,sorted_triangles[yaw_index]) 24 | end 25 | 26 | function transformation(vec,yaw_sin,yaw_cos,pitch_sin,pitch_cos,roll_sin,roll_cos,scale) 27 | local x,y,z=vec.x,vec.y,vec.z 28 | if roll_sin ~= 0 then 29 | z,y=rotatesincos(z,y,roll_sin,roll_cos) 30 | end 31 | if pitch_sin ~= 0 then 32 | x,y=rotatesincos(x,y,pitch_sin,pitch_cos) 33 | end 34 | x,z=rotatesincos(x,z,yaw_sin,yaw_cos) 35 | return {x=x*scale,y=y*scale,z=z*scale} 36 | end 37 | 38 | function car_transform(vertices_in, vertices_out, yaw, pitch, roll, scale) 39 | local yaw_sin=sin(yaw) 40 | local yaw_cos=cos(yaw) 41 | local pitch_sin=sin(pitch) 42 | local pitch_cos=cos(pitch) 43 | local roll_sin=sin(roll) 44 | local roll_cos=cos(roll) 45 | 46 | for i=1,#vertices_in do 47 | vertices_out[i]=transformation(vertices_in[i],yaw_sin,yaw_cos,pitch_sin,pitch_cos,roll_sin,roll_cos,scale) 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /picooffroad/game/cars.lua: -------------------------------------------------------------------------------- 1 | car_max_speed_forward=4 2 | car_nitro_speed_increase=2 3 | car_max_speed_reverse=-1 4 | car_turn_speed=0.1 5 | car_inertia=0.95 6 | car_gravity=-0.2 7 | car_half_width=4 8 | car_half_length=8 9 | car_terrain_slip=0.85 10 | car_dirt_slip=0.96 11 | car_scale=5 12 | car_colors_default={ 13 | {8,2, "red hurricane"}, 14 | {11,3,"green devil"}, 15 | {12,1,"blue lightning"}, 16 | {10,9,"yellow thunder"}, 17 | {6,13,"silver blaze"} 18 | } 19 | 20 | default_throttle=1 21 | difficulty_levels={ 22 | {n="easy",t=0.8}, 23 | {n="medium",t=0.9}, 24 | {n="hard",t=1}, 25 | {n="extreme",t=1.1}, 26 | } 27 | 28 | player_color=1 29 | waypoint_order=1 30 | cars_count=4 31 | laps_count=4 32 | start_time=0 33 | difficulty=1 34 | 35 | function cars_init() 36 | particles={} 37 | frame=0 38 | 39 | local start_ofs=1 40 | if waypoint_order<0 then 41 | start_ofs=9 42 | end 43 | 44 | car_sorting=split("1,2,3,4") 45 | 46 | car_colors={} 47 | add(car_colors,car_colors_default[player_color]) 48 | for i=2,4 do 49 | if i==player_color then 50 | add(car_colors,car_colors_default[1]) 51 | else 52 | add(car_colors,car_colors_default[i]) 53 | end 54 | end 55 | 56 | cars={} 57 | for i=1,cars_count do 58 | local cx=start_positions[start_ofs+ (i-1)*2] 59 | local cz=start_positions[start_ofs+1+(i-1)*2] 60 | local t,cy=sample_tile_map(cx,cz) 61 | add(cars,{x=cx,y=cy,z=cz,yaw=hpi+hpi*waypoint_order,speed=0,speed_y=0,throttle=0,nitro=0,breaking=0,in_air=false,slip=0,slip_x=0,slip_z=0,colour=i,last_waypoint=0,next_waypoint=0,next_x=0,next_z=0,nitro_remains=100,nitro_max=100,lap=-1,is_ai=i>1}) 62 | car_simulate(cars[#cars]) 63 | end 64 | 65 | start_time=time()+3.5 66 | end 67 | 68 | function cars_update() 69 | if time()=pi2 then 92 | car.yaw-=pi2 93 | end 94 | end 95 | 96 | if right then 97 | car.yaw-=car_turn_speed 98 | if car.yaw<0 then 99 | car.yaw+=pi2 100 | end 101 | end 102 | 103 | if nitro and car.nitro_remains>0 then 104 | car.nitro=car_nitro_speed_increase 105 | car.nitro_remains-=1 106 | else 107 | car.nitro=0 108 | end 109 | 110 | if throttle then 111 | car.throttle=default_throttle 112 | elseif rev then 113 | car.throttle=-default_throttle 114 | else 115 | car.throttle=0 116 | end 117 | end 118 | 119 | function car_next_waypoint(car) 120 | if car.last_waypoint==car.next_waypoint then 121 | local nw=(car.next_waypoint + #waypoints + waypoint_order)%#waypoints 122 | local wps=waypoints[nw+1] 123 | local index=flr(rnd(#wps\2))*2+1 124 | car.next_waypoint=nw 125 | car.next_x=wps[index] 126 | car.next_z=wps[index+1] 127 | end 128 | end 129 | 130 | function car_player(car) 131 | car_input(cars[1],btn(0),btn(1),btn(2) or btn(5),btn(3),btn(4)) 132 | car_update_lap(car,car.last_waypoint,car.next_waypoint) 133 | car_next_waypoint(car) 134 | end 135 | 136 | function car_ai(car) 137 | car_update_lap(car,car.last_waypoint,car.next_waypoint) 138 | car_next_waypoint(car) 139 | 140 | local dir_x=car.next_x-car.x 141 | local dir_z=car.next_z-car.z 142 | local dst_yaw = atan2(-dir_x,dir_z) 143 | car.dst_yaw=dst_yaw 144 | 145 | car.dst_distance=dir_x*dir_x+dir_z*dir_z 146 | 147 | local delta_yaw=dst_yaw-car.yaw 148 | if delta_yaw> pi then delta_yaw-=pi2 end 149 | if delta_yaw<-pi then delta_yaw+=pi2 end 150 | 151 | car_input(car,delta_yaw>0.1,delta_yaw<-0.1,abs(delta_yaw)<0.5,false,car.dst_distance>6400) 152 | 153 | local next_wps=waypoints[car.next_waypoint+1] 154 | local index=flr(rnd(#next_wps\2))*2+1 155 | local ndir_x=next_wps[index]-car.x 156 | local ndir_z=next_wps[index+1]-car.z 157 | 158 | if (ndir_x*ndir_x+ndir_z*ndir_z)=laps_count then 168 | sfx(56) 169 | set_finish_time() 170 | set_state(3) 171 | end 172 | end 173 | end 174 | 175 | function set_finish_time() 176 | if cars[1].finish_time==nil then 177 | for i=1,cars_count do 178 | local car=cars[i] 179 | local ft=t()-start_time 180 | if car.lap>=laps_count then 181 | car.finish_time=ft 182 | else 183 | local dir_x=car.next_x-car.x 184 | local dir_z=car.next_z-car.z 185 | local t_dist=sqrt(dir_x*dir_x+dir_z*dir_z)*0.1 186 | car.finish_time=ft+t_dist+(laps_count-car.lap-1)*#waypoints*5 187 | while car.next_waypoint~=0 do 188 | car.next_waypoint=(car.next_waypoint + #waypoints + waypoint_order)%#waypoints 189 | car.finish_time+=5 190 | end 191 | end 192 | end 193 | end 194 | end 195 | 196 | function car_simulate(car) 197 | local was_air=car.in_air 198 | local prc=0 199 | local prs=146 200 | 201 | local inertia = car_inertia 202 | if car.in_air then inertia = 1 end 203 | local max_speed = car_max_speed_forward 204 | if car.is_ai then max_speed *= difficulty_levels[difficulty].t end 205 | car.speed = clamp(car.speed*inertia + car.throttle + car.nitro, car_max_speed_reverse, max_speed + car.nitro) 206 | 207 | local speed=car.speed 208 | if not car.in_air then 209 | speed*=(1-abs(car.pitch)*0.4) 210 | 211 | if height_is_water(car.y) then 212 | speed = min(speed,2) 213 | prs=150 214 | prc=2 215 | end 216 | end 217 | 218 | local dir_x=-cos(car.yaw) 219 | local dir_z= sin(car.yaw) 220 | local right_x=-dir_z 221 | local right_z= dir_x 222 | 223 | local move_x = lerp(dir_x,car.slip_x,car.slip) 224 | local move_z = lerp(dir_z,car.slip_z,car.slip) 225 | move_x,move_z = normalize2d(move_x,move_z) 226 | 227 | car.slip_x = move_x 228 | car.slip_z = move_z 229 | 230 | local new_x = car.x + move_x * speed 231 | local new_z = car.z + move_z * speed 232 | 233 | local fwd_x=dir_x*car_half_length 234 | local fwd_z=dir_z*car_half_length 235 | 236 | local f_x=new_x+fwd_x 237 | local f_z=new_z+fwd_z 238 | local b_x=new_x-fwd_x 239 | local b_z=new_z-fwd_z 240 | 241 | if speed>=0 then 242 | local f_t,f_h=sample_tile_map(f_x,f_z) 243 | if tile_is_obstacle(f_t) then 244 | local sol_x,sol_z=sample_collision_solution(f_x,f_z) 245 | 246 | if sol_x~=0 or sol_z~=0 then 247 | local tf_x=flr(f_x/8) 248 | local tf_z=flr(f_z/8) 249 | while tf_x==flr(f_x/8) and tf_z==flr(f_z/8) do 250 | f_x+=sol_x 251 | f_z+=sol_z 252 | end 253 | else 254 | car.screen_x,car.screen_y=isometry(car.x,car.y,car.z) 255 | car.in_air=false 256 | return 257 | end 258 | 259 | dir_x,dir_z=normalize2d(f_x-b_x,f_z-b_z) 260 | 261 | right_x=-dir_z 262 | right_z= dir_x 263 | 264 | fwd_x=dir_x*car_half_length 265 | fwd_z=dir_z*car_half_length 266 | 267 | car.yaw = atan2(-dir_x,dir_z) 268 | 269 | new_x = f_x-fwd_x 270 | new_z = f_z-fwd_z 271 | 272 | b_x=new_x-fwd_x 273 | b_z=new_z-fwd_z 274 | 275 | if not car.in_air then 276 | car.speed = min(car.speed,1.8) 277 | car.speed_y = max(car.speed_y,0) 278 | end 279 | end 280 | else 281 | local b_t,b_h=sample_tile_map(b_x,b_z) 282 | if tile_is_obstacle(b_t) then 283 | return 284 | end 285 | end 286 | 287 | car.x=new_x 288 | car.z=new_z 289 | 290 | right_x*=car_half_width 291 | right_z*=car_half_width 292 | 293 | local fr_x=f_x+right_x 294 | local fr_z=f_z+right_z 295 | local fl_x=f_x-right_x 296 | local fl_z=f_z-right_z 297 | local br_x=b_x+right_x 298 | local br_z=b_z+right_z 299 | local bl_x=b_x-right_x 300 | local bl_z=b_z-right_z 301 | 302 | local fr_t,fr_y,fr_w = sample_tile_map(fr_x,fr_z) 303 | local fl_t,fl_y,fl_w = sample_tile_map(fl_x,fl_z) 304 | local br_t,br_y,br_w = sample_tile_map(br_x,br_z) 305 | local bl_t,bl_y,bl_w = sample_tile_map(bl_x,bl_z) 306 | 307 | local f_y = (fr_y+fl_y)*0.5 308 | local b_y = (br_y+bl_y)*0.5 309 | local r_y = (fr_y+br_y)*0.5 310 | local l_y = (fl_y+bl_y)*0.5 311 | 312 | car.sfr_x,car.sfr_y=isometry(fr_x,fr_y,fr_z) 313 | car.sfl_x,car.sfl_y=isometry(fl_x,fl_y,fl_z) 314 | car.sbr_x,car.sbr_y=isometry(br_x,br_y,br_z) 315 | car.sbl_x,car.sbl_y=isometry(bl_x,bl_y,bl_z) 316 | 317 | car.speed_y = clamp(car.speed_y+car_gravity,-4,4) 318 | local phys_y=car.y+car.speed_y 319 | local new_tile_type = fr_t 320 | local new_y = (f_y+b_y)*0.5 321 | 322 | if phys_y>new_y then 323 | car.in_air=true 324 | car.y=phys_y 325 | car.roll*=0.95 326 | car.pitch=max(car.pitch-0.03,-0.4) 327 | car.slip=0 328 | else 329 | if tile_is_dirt(new_tile_type) then 330 | car.slip=car_dirt_slip 331 | else 332 | car.slip=car_terrain_slip 333 | end 334 | 335 | car.in_air=false 336 | car.speed_y=new_y-car.y 337 | car.y=new_y 338 | car.tile_type=new_tile_type 339 | 340 | car.pitch=clamp((f_y-b_y)/car_half_length*0.5,-0.5,0.5) 341 | car.roll=clamp((l_y-r_y)/car_half_width*0.5,-0.5,0.5) 342 | end 343 | 344 | car.screen_x,car.screen_y=isometry(car.x,car.y,car.z) 345 | 346 | if was_air and not car.in_air then 347 | prc+=4 348 | end 349 | 350 | if not car.in_air and abs(car.speed)>0.8 and (car.slip>0.9 or car.speed>car_max_speed_forward) then 351 | prc+=1 352 | end 353 | 354 | for i=1,prc do 355 | add(particles,{s=prs,x=flr(car.screen_x-11+rnd(10)),y=flr(car.screen_y-11+rnd(10))}) 356 | end 357 | 358 | if fr_w~=-1 then car.last_waypoint=fr_w end 359 | if fl_w~=-1 then car.last_waypoint=fl_w end 360 | if br_w~=-1 then car.last_waypoint=br_w end 361 | if bl_w~=-1 then car.last_waypoint=bl_w end 362 | end 363 | 364 | function particles_update() 365 | if frame%4==0 then 366 | for i=1,#particles do 367 | local p=particles[i] 368 | if p==nil then break end 369 | if p.s==149 or p.s==153 then 370 | deli(particles,i) 371 | else 372 | p.s+=1 373 | end 374 | end 375 | end 376 | end 377 | 378 | function cars_draw(ofs_x,ofs_y) 379 | for i=1,cars_count do 380 | local car=cars[i] 381 | local x=car.screen_x-ofs_x 382 | local y=car.screen_y-ofs_y 383 | if x>-8 and x<136 and y>-8 and y<136 then 384 | draw_shade( 385 | car.sfr_x-ofs_x,car.sfr_y-ofs_y, 386 | car.sfl_x-ofs_x,car.sfl_y-ofs_y, 387 | car.sbl_x-ofs_x,car.sbl_y-ofs_y, 388 | car.sbr_x-ofs_x,car.sbr_y-ofs_y 389 | ) 390 | end 391 | end 392 | 393 | palt() 394 | for i=1,#particles do 395 | local p=particles[i] 396 | spr(p.s,p.x-ofs_x,p.y-ofs_y) 397 | end 398 | 399 | for i=1,cars_count-1 do 400 | if cars[car_sorting[i]].screen_y > cars[car_sorting[i+1]].screen_y then 401 | car_sorting[i],car_sorting[i+1]=car_sorting[i+1],car_sorting[i] 402 | end 403 | end 404 | 405 | for i=1,cars_count do 406 | local car=cars[car_sorting[i]] 407 | local colors=car_colors[car.colour] 408 | pal(11,colors[1]) 409 | pal(3,colors[2]) 410 | 411 | local x=car.screen_x-ofs_x 412 | local y=car.screen_y-ofs_y 413 | if x>-8 and x<136 and y>-8 and y<136 then 414 | car_draw(x,y,car.yaw,car.pitch,car.roll,car_scale) 415 | end 416 | end 417 | 418 | pal(11,11) 419 | pal(3,3) 420 | end 421 | -------------------------------------------------------------------------------- /picooffroad/game/debug.lua: -------------------------------------------------------------------------------- 1 | tile_color_top ={ 4, 5,15, 5,15,14,14,14,14,14, 9, 4} 2 | tile_color_bottom={ 4, 4, 4, 4,15, 8, 8, 8, 8, 8, 9, 4} 3 | 4 | function tiles_draw(ofs_x,ofs_y,transparent) 5 | for y=0,127 do 6 | for x=0,127 do 7 | if (not transparent) or ((x&1)==1) then 8 | local pix_x=ofs_x+x 9 | local pix_y=ofs_y+y 10 | local map_x=pix_x-511+pix_y 11 | local map_z=pix_y*2 12 | 13 | local t,h,wp=sample_tile_map(map_x,map_z) 14 | local c=tile_color_bottom[t] 15 | rectfill(x,y,x,y-h+1,1) 16 | 17 | c=tile_color_top[t] 18 | if t==1 and h==0 then 19 | c=12 -- water 20 | end 21 | 22 | local sx,sz=sample_collision_solution(map_x,map_z) 23 | if sx==0 and sz==0 and tile_is_obstacle(t) then 24 | c=8 25 | end 26 | 27 | if wp~=-1 and ((x^^y)&1==1) then 28 | c=wp 29 | end 30 | 31 | pset(x,y-h,c) 32 | end 33 | end 34 | end 35 | end 36 | 37 | function dump_sprite_map() 38 | for y=0,sprite_map_h-1 do 39 | for x=0,sprite_map_w-1 do 40 | printh(mget(x,y),"map_dump.txt") 41 | end 42 | end 43 | end 44 | 45 | function debug_screen_controls() 46 | if btn(⬅️) then map_ofs_x=max(0 ,map_ofs_x-8) end 47 | if btn(➡️) then map_ofs_x=min(384,map_ofs_x+8) end 48 | if btn(⬆️) then map_ofs_y=max(0 ,map_ofs_y-8) end 49 | if btn(⬇️) then map_ofs_y=min(128,map_ofs_y+8) end 50 | end -------------------------------------------------------------------------------- /picooffroad/game/drawing.lua: -------------------------------------------------------------------------------- 1 | transparent_patterns={ 2 | 0b1111111111111111.1, 3 | 0b0101111101011111.1, 4 | 0b0101111001011110.1, 5 | 0b0101101001011010.1, 6 | 0b0101100001011000.1, 7 | 0b0101000001010000.1, 8 | 0b0100000001000000.1, 9 | 0b0000000000000000.1 10 | } 11 | 12 | function set_transparent_pattern(alpha) 13 | fillp(transparent_patterns[ceil(clamp(alpha*(#transparent_patterns-1),0,#transparent_patterns-1))+1]) 14 | end 15 | 16 | function draw_sprite4(sx,sy,sw,sh,dx,dy) 17 | for ry=0,sh-1 do 18 | for rx=0,sw-1 do 19 | local c=sget(rx+sx,ry+sy) 20 | if c~=0 then 21 | rectfill(dx+rx*4,dy+ry*4,dx+rx*4+3,dy+ry*4+3,c) 22 | end 23 | end 24 | end 25 | end 26 | 27 | function printo(text,x,y,c) 28 | local d={0,0,-1,1,0,0} 29 | for j=1,4 do 30 | print(text, x+d[j+2], y+d[j], 0) 31 | end 32 | print(text, x, y, c) 33 | end 34 | 35 | function time_str(t) 36 | return tostr(num_to_str2(t\60)..":"..num_to_str21(t%60)) 37 | end 38 | 39 | function num_to_str2(n) 40 | return tostr(n\10)..flr(n%10) 41 | end 42 | 43 | function num_to_str21(n) 44 | local tenths=flr((n%10)*10) 45 | return tostr(n\10)..tenths\10 .."."..tenths%10 46 | end 47 | 48 | function lap_to_str(lap) 49 | if lap==-1 then 50 | return "" 51 | end 52 | return "l"..(lap+1) 53 | end 54 | 55 | function draw_progress(x1,y1,x2,v,c1,c2) 56 | local y2=y1+3 57 | line(x1+1,y1,x2-1,y1,0) 58 | line(x1+1,y2,x2-1,y2,0) 59 | line(x1,y1+1,x1,y2-1,0) 60 | line(x2,y1+1,x2,y2-1,0) 61 | 62 | x1+=1 63 | x2-=1 64 | local x=flr(x2-(x2-x1)*v) 65 | if x>=x2 then return end 66 | 67 | line(x,y1+1,x2,y1+1,c1) 68 | line(x,y1+2,x2,y1+2,c2) 69 | end 70 | -------------------------------------------------------------------------------- /picooffroad/game/game.lua: -------------------------------------------------------------------------------- 1 | map_ofs_x=0 2 | map_ofs_y=0 3 | 4 | track=1 5 | 6 | car_controls=1 7 | 8 | tracks={ 9 | {u=0x2000,d=0x2800,rm=racing_map1,wp=waypoints_racing_map1,st=starts_racing_map1}, 10 | {u=0x1800,d=0x1840,rm=racing_map2,wp=waypoints_racing_map2,st=starts_racing_map2}, 11 | {u=0x2040,d=0x2840,rm=racing_map3,wp=waypoints_racing_map3,st=starts_racing_map3} 12 | } 13 | 14 | function game_init() 15 | --music(-1) 16 | local t=tracks[track] 17 | pal(5,132,1) 18 | pal(15,143,1) 19 | 20 | for i=0,1920,128 do 21 | reload(0x2000+i,t.u+i,64) 22 | reload(0x2800+i,t.d+i,64) 23 | end 24 | 25 | shadows_init("0,0,2,3,5,1,6,7,8,4,4,11,1,13,14,4") 26 | tiles_init(t.rm,t.wp,t.st) 27 | sprite_map_init(0,0) 28 | car_rendering_init() 29 | cars_init() 30 | end 31 | 32 | function game_update() 33 | cars_update() 34 | 35 | if car_controls==1 then 36 | local new_ofs_x=cars[1].screen_x-64 37 | local new_ofs_y=cars[1].screen_y-64 38 | map_ofs_x=max(0,min(384,new_ofs_x)) 39 | map_ofs_y=max(0,min(128,new_ofs_y)) 40 | else 41 | debug_screen_controls() 42 | end 43 | end 44 | 45 | function game_draw() 46 | palt(0,false) 47 | sprite_map_draw(-map_ofs_x,-map_ofs_y) 48 | cars_draw(map_ofs_x,map_ofs_y) 49 | palt(0,true) 50 | second_sprite_map_draw(-map_ofs_x,-map_ofs_y) 51 | 52 | if btn(❎) and car_controls==0 then 53 | tiles_draw(map_ofs_x,map_ofs_y,not btn(🅾️)) 54 | end 55 | 56 | game_ui_draw() 57 | end 58 | -------------------------------------------------------------------------------- /picooffroad/game/game_states.lua: -------------------------------------------------------------------------------- 1 | game_states={ 2 | {init=title_init,update=title_update,draw=title_draw}, 3 | {init=game_init,update=game_update,draw=game_draw}, 4 | {init=results_init,update=results_update,draw=results_draw}, 5 | {init=trophy_init,update=trophy_update,draw=trophy_draw} 6 | } 7 | 8 | game_state=1 9 | next_state=0 10 | trans=1 11 | trans_dir=-0.066 12 | 13 | function game_states_init() 14 | --set_state(1) 15 | title_init() 16 | title_update() 17 | end 18 | 19 | function game_states_update() 20 | if trans>0 then 21 | trans=max(trans+trans_dir,0) 22 | if trans>1 then 23 | trans=1 24 | trans_dir*=-1 25 | 26 | reload(0,0,0x2fff) 27 | pal() 28 | game_state=next_state 29 | game_states[game_state].init() 30 | game_states[game_state].update() 31 | end 32 | else 33 | game_states[game_state].update() 34 | end 35 | end 36 | 37 | function game_states_draw() 38 | game_states[game_state].draw() 39 | if trans>0 then 40 | set_transparent_pattern(trans) 41 | rectfill(0,0,127,127,0) 42 | fillp() 43 | end 44 | end 45 | 46 | function set_state(state) 47 | next_state=state 48 | trans_dir=0.066 49 | trans=0.01 50 | end 51 | -------------------------------------------------------------------------------- /picooffroad/game/game_ui.lua: -------------------------------------------------------------------------------- 1 | prevcountdown=-1 2 | function game_ui_draw() 3 | local t=time()-start_time 4 | 5 | if t>=0 then 6 | printo(time_str(t),64-12,2,7) 7 | 8 | for j=0,cars_count-1 do 9 | local ls=lap_to_str(cars[j+1].lap) 10 | if j==0 then 11 | ls=ls.."/"..laps_count 12 | end 13 | printo(ls,2,2+j*6,car_colors[cars[j+1].colour][1]) 14 | end 15 | 16 | for j=0,cars_count-1 do 17 | draw_progress(128-32,2+j*3,126,cars[j+1].nitro_remains/cars[j+1].nitro_max,car_colors[cars[j+1].colour][1],car_colors[cars[j+1].colour][2]) 18 | end 19 | end 20 | 21 | if t<1 then 22 | t=-t+1 23 | set_transparent_pattern(t-flr(t)) 24 | local sx=3 25 | if time()>=start_time then 26 | sx=9 27 | end 28 | local countdown=3-flr(t) 29 | draw_sprite4(countdown*3,64-6,sx,6, 64-(sx*4)/2,64-24/2) 30 | fillp() 31 | 32 | if countdown>prevcountdown then 33 | if countdown==3 then 34 | sfx(55) 35 | else 36 | sfx(54) 37 | end 38 | end 39 | prevcountdown=countdown 40 | end 41 | end 42 | 43 | -------------------------------------------------------------------------------- /picooffroad/game/lz77_decompressor.lua: -------------------------------------------------------------------------------- 1 | function lz77_decomp(x0,y0,w,h,src,vset) 2 | local i,d=1,{} 3 | while i<=#src do 4 | local c=ord(src,i) 5 | if c<48 then 6 | add(d,c-32) 7 | else 8 | local ofs,run=w,c-46 9 | if c>=94 then 10 | run-=29 11 | end 12 | if run>=103 then 13 | run-=101 14 | else 15 | i+=1 16 | ofs=ord(src,i)-31 17 | if ofs>=63 then 18 | ofs-=29 19 | end 20 | end 21 | local pos=#d-ofs 22 | for j=1,run do 23 | add(d,d[pos+j]) 24 | end 25 | end 26 | i+=1 27 | end 28 | for i=0,w*h-1 do 29 | vset(i%w+x0,i\w+y0,d[i+1]) 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /picooffroad/game/math.lua: -------------------------------------------------------------------------------- 1 | hpi=1.57075 2 | pi=3.1415 3 | pi2=6.283 4 | 5 | cos1 = cos function cos(angle) return cos1(angle/(pi2)) end 6 | sin1 = sin function sin(angle) return -sin1(angle/(pi2)) end 7 | atan21 = atan2 function atan2(x,y) return atan21(x,-y)*pi2 end 8 | 9 | function isometry(x,y,z) 10 | return x+511-z/2, z/2-y 11 | end 12 | 13 | function clamp(a,min_value,max_value) 14 | return min(max(a,min_value), max_value) 15 | end 16 | 17 | function rotate(x,y,angle) 18 | local c=cos(angle) 19 | local s=sin(angle) 20 | return x*c-y*s,x*s+y*c 21 | end 22 | 23 | function rotatesincos(x,y,s,c) 24 | return x*c-y*s,x*s+y*c 25 | end 26 | 27 | function cross(x1,y1,z1,x2,y2,z2) 28 | return y1*z2-z1*y2, z1*x2-x1*z2, x1*y2-y1*x2 29 | end 30 | 31 | function dot(x1,y1,z1,x2,y2,z2) 32 | return x1*x2+y1*y2+z1*z2 33 | end 34 | 35 | function normalize(x,y,z) 36 | local d=1/sqrt(x*x+y*y+z*z) 37 | return x*d,y*d,z*d 38 | end 39 | 40 | function normalize2d(x,y) 41 | local d=1/sqrt(x*x+y*y) 42 | return x*d,y*d 43 | end 44 | 45 | function lerp(a,b,t) 46 | return a+(b-a)*t 47 | end -------------------------------------------------------------------------------- /picooffroad/game/racing_maps.lua: -------------------------------------------------------------------------------- 1 | racing_map1=[[ロ^:リモム^<えzお;ええお:えおお9えかお.ワヲえrっっツ^ テトc!んんえbお'ツお#う#ツえmお&う ツツえbく&▥ お#う"え*メそ"c#の(や^ え*お そ う"ををソコクゆ^#クケコク^ c#a(え&お"え!ツす%ををツえ_わえ0せ う え_わえ)ナナえ%う!え^わわやえ(ニニえ$う"え@う え)★!え"g"え^やえ$⧗'え"b#リモみ#も メh"c#a(う え#お"え8f5えzろえ%お!ツナナツゃえgやろろえ)ニニツゃお(え)ク^"ゆ^)p やお も%え ツう ツツえ2れえ4やえ*う!こ t ゅゅえ,お"え0や▒&ロう%え ゅゅやえ+クお"え;ロう$ツう!え-お"え-`!▒'ロう$ツう!え.お!え-▥'え"^%え3⬅️,k0お%ツう えvロツ^ えmお&えのお$ンナ^ ンえnか#ッニ^ ッえ@メ○(お)ツ^ ロえ-るるて$ホフ^$ヘケコふ!a$りりえ:るる웃%オウ^$エえ)りりクも#え3う'え3う え9う'ケコえ'ぬ&う"え#う え1☉&え2う"え+ツえ*う&え2う#え#お!え!ょょえ?も$う$え*ょょツソコも"アアさ'も メモホフ^$ヘえ%め サササえ$お う"え$アアu%d7え シシシえ(う!え#う え_`!も%ロう"え"う!えl^#リモムムう!え@サササ✽)え'ふ*え7シシシえ3お"え?^#も'えむお"えしサ^!✽*えhシ^!え6お=らら⬇️"░+え(イイムメた!さ.⬆️#ククお$え4イイククケコ웃%クよg&f'お#も+え%う!え$や`!え e"お/え2う"え$➡️"え _0お!え+ムえ"う#…)え3お!え2う(や`"よe$お/え,ムえ!✽/よに'🅾️-え0█:]] 2 | waypoints_racing_map1=15 3 | starts_racing_map1=split('3763,3954,3760,3951,3959,3768,3962,3771') 4 | racing_map2=[[ム^◝も⧗ホフ^"ヘも!メモも@んク^*オウ^"エs!ケコy+クっっえ0お+え5や^ っっクえ/クお)ケコえ4う#やえ1お)え9う え3お(え8う!え4お'え6クう#え4ひ&メモホフ^"ヘk#😐'っそ#え.ヤサササひ1●-う!☉ ヤお-ユシシシクををお_☉ ユへ1ををククえ^き ふ1う!ククわわ○5え<う+えkう,えlう+え5ヤサササめ6う(え5ユシシシえ7む め!え8ムめ:む め!えs▥$えセサササヤえvシシシユも+ヨ^"ヤヤほ `%ヤヤr!え2め/え#ヨヨス^'ぬ#えaお%ええゃ^"⧗*d'え!ゆ^ やややえ^メえ/い!う!お#モえ/ク^#え&ラリけ(い"え#ろろえ$メけ+キ^#ムクるるクケスススセソb りりえ-ろろけ スコクククケb!`#れれクオウ^#エえ'ややりりスえ,う"えbりりややえ)う%え(け#え1ススう!え)う&え#`"え8う"え$スえ"う%え_りりスえ,ろろひ!a"え8ム^ メヨヨう ⬅️"え#c-モ⬇️!♥"g%マカ^"マヘえ$い#え>e'ク^"ふ#★!え:ヨえ/ゅ^"え4😐/え<ユユシ^#ユユえaク^"m-n(く0メモa#も ょえ サササヤも&ゆ^#え1や^"も ケコa#▥ ょお シシシユえ^アお#やえ)お"クク😐'え9お#▥#え%お#え_やお%え*お"え'は$え2お#▥#え'お!え&ヤササふ ササヤえ2お$え,お え&ユシシふ シシユえ3やひ"メモa#_1は$z1え&b9えコへ6の(らや^#ま5イイお4む"ややらお$え4イイ✽"b&よl+▥ お$え3う)や`!え e"え'お$え2う)す#え p)え!お#え1う/え2お"え2☉*`"よe$へ+ららクえ1░-て よぬ&🅾️1qf]] 5 | waypoints_racing_map2=15 6 | starts_racing_map2=split('3764,3955,3761,3952,3960,3769,3963,3772') 7 | racing_map3=[[ヨ^^ム^7えzお_え∧お@モえ❎お2…"メえiゆんんス^$コゆ^ ケj%ク^$やっっや^ お5スお!∧ え5う$え7お!う"え3う$え.お%∧ お%え1う%クえ6▤ ゆんち"モも!メふ$j"ムムう$え0お$スお ゆゆち$d(え$クえ>う!スえ6ムい#クえ0お"ルタ^ ゆゆえ7▤ `"え4レチ^ スススえ>お1き!ススゆゆゆスをを…&メえ*う&お w は#や^!わえ$い う ス^ コせ ゆゆケh!j ❎(け$w s あ"う え%❎ う#えgわわクえ&う!ゆゆえaう%やえ&う い!えfう え&う スお#えcう!え#ムヨう"…$えcけ!え$^(モに"メj)ムこ&w#s$え'お*ち/ムムゃ^$l$え.c=え%お)ろえdク^'え(お!え2クれれ◆(h1❎ ややお!え3お>え"お!え4お=え#お え5お<え!❎1え'クれn-は!➡️7え.웃)えzお&も"メモえkゅ^$∧<え*お)え%お)フフヘメモな2ゆ^"るるな-の#メモホフ^!ウウエケコw#りりv!え+るるゆゆˇ(き'ケコオウ^#え%う!え-う!えaう"え,う7え)も"う#え+う"え4ククえ*う$え*う;え*う%え)う#お7え#フフヘ➡️ う%え)h.す&🐱#ホフ^!x2おイイみ/メヨヨススコ▤!お$え7イイさ#ち"よi$ケス^ え"お$え6う&や`!え e"え(お#え5う&こ#え て"え)お"え4う,え3お クえ3う(や`"よe$え#み&お え1う(し$よと$え ヨヨモ➡️1q`メヨヨ]] 8 | waypoints_racing_map3=15 9 | starts_racing_map3=split('3763,3954,3760,3951,3959,3768,3962,3771') 10 | -------------------------------------------------------------------------------- /picooffroad/game/rendering.lua: -------------------------------------------------------------------------------- 1 | function project_vertices(vertices_in, vertices_out, offset_x,offset_y) 2 | for i=1,#vertices_in do 3 | vertices_out[i]={x=flr(vertices_in[i].x+0.5*vertices_in[i].z)+offset_x,y=flr(vertices_in[i].y-0.5*vertices_in[i].z)+offset_y} 4 | end 5 | end 6 | 7 | function sort_triangles(vertices,triangles) 8 | local triangles_count=#triangles/4 9 | for i=0,triangles_count-2 do 10 | local z1=(vertices[triangles[1+i*4]].z+vertices[triangles[2+i*4]].z+vertices[triangles[3+i*4]].z)/3 11 | local best_i=i 12 | local best_z=z1 13 | for j=i+1,triangles_count-1 do 14 | local z2=(vertices[triangles[1+j*4]].z+vertices[triangles[2+j*4]].z+vertices[triangles[3+j*4]].z)/3 15 | if z2>best_z then 16 | best_i=j 17 | best_z=z2 18 | end 19 | end 20 | if best_i~=i then 21 | for j=0,3 do 22 | triangles[1+i*4+j],triangles[1+best_i*4+j]=triangles[1+best_i*4+j],triangles[1+i*4+j] 23 | end 24 | end 25 | end 26 | end 27 | 28 | function cull_triangles(vertices,triangles,dir_x,dir_y,dir_z) 29 | local out={} 30 | local triangles_count=#triangles/4 31 | for i=0,triangles_count-1 do 32 | local nx,ny,nz = calc_triangle_normal(vertices,triangles,i) 33 | if dot(nx,ny,nz,dir_x,dir_y,dir_z) < 0 then 34 | for j=1,4 do 35 | add(out,triangles[j+i*4]) 36 | end 37 | end 38 | end 39 | return out 40 | end 41 | 42 | function calc_triangle_normal(vertices,triangles,idx) 43 | local i1=triangles[1+idx*4] 44 | local i2=triangles[2+idx*4] 45 | local i3=triangles[3+idx*4] 46 | return cross(vertices[i3].x-vertices[i1].x,vertices[i3].y-vertices[i1].y,vertices[i3].z-vertices[i1].z,vertices[i2].x-vertices[i1].x,vertices[i2].y-vertices[i1].y,vertices[i2].z-vertices[i1].z) 47 | end 48 | 49 | function draw_triangles(vertices2d,triangles) 50 | local triangles_count=#triangles/4 51 | for i=0,triangles_count-1 do 52 | draw_triangle(vertices2d[triangles[1+i*4]],vertices2d[triangles[2+i*4]],vertices2d[triangles[3+i*4]],triangles[4+i*4]-1) 53 | end 54 | end 55 | 56 | function draw_triangle(v1,v2,v3,colour) 57 | local x1,y1,x2,y2,x3,y3=v1.x,v1.y,v2.x,v2.y,v3.x,v3.y 58 | if x1==x2 and y1==y2 then 59 | pset(x1,y1,color) 60 | return 61 | end 62 | 63 | if y2 cars[nj].finish_time) then 85 | res_sorting[i],res_sorting[ni]=res_sorting[ni],res_sorting[i] 86 | end 87 | 88 | local c=car_colors[j][1] 89 | printo(posn[i],5,y,c) 90 | printo(car_colors[j][3],22,y,c) 91 | if not res_tour then 92 | printo(time_str(cars[j].finish_time),83,y,c) 93 | end 94 | if tour~=nil then 95 | if res_tour then 96 | printo(tour[j],117,y,c) 97 | else 98 | printo(cars_count-i+1,117,y,c) 99 | end 100 | end 101 | end 102 | 103 | printo("❎ continue",44,120,7) 104 | res_frame+=1 105 | end 106 | -------------------------------------------------------------------------------- /picooffroad/game/shadows.lua: -------------------------------------------------------------------------------- 1 | function shadows_init(shading) 2 | local shadow_color=split(shading) 3 | for i=0,255 do 4 | poke(0x4300|i,shadow_color[(i&0xf)+1]|(shadow_color[((i>>4)&0xf)+1]<<4)) 5 | end 6 | end 7 | 8 | function draw_shade(x1,y1,x2,y2,x3,y3,x4,y4) 9 | y1=flr(y1) 10 | y2=flr(y2) 11 | y3=flr(y3) 12 | y4=flr(y4) 13 | 14 | shade_edge(x1,y1,x2,y2) 15 | shade_edge(x2,y2,x3,y3) 16 | shade_edge(x3,y3,x4,y4) 17 | shade_edge(x4,y4,x1,y1) 18 | 19 | local min_y=clamp(min(y1,min(y2,min(y3,y4))),0,127) 20 | local max_y=clamp(max(y1,max(y2,max(y3,y4))),0,127) 21 | 22 | for y=min_y,max_y do 23 | local xl=peek(0x4400+y)\2 24 | local xr=peek(0x4480+y)\2 25 | local scanline=0x6000+y*64 26 | for x=xl,xr do 27 | poke(scanline+x,peek(0x4300|peek(scanline+x))) 28 | end 29 | end 30 | end 31 | 32 | function shade_edge(x1,y1,x2,y2) 33 | if y1=0 and y1<=127 then 37 | poke(0x4400|y1,clamp(x1,0,127)) 38 | end 39 | x1+=dx 40 | y1+=1 41 | end 42 | elseif y1>y2 then 43 | local dx=(x1-x2)/(y1-y2) 44 | while y2<=y1 do 45 | if y2>=0 and y2<=127 then 46 | poke(0x4480|y2,clamp(x2,0,127)) 47 | end 48 | x2+=dx 49 | y2+=1 50 | end 51 | elseif y1>=0 and y1<=127 then 52 | x1=clamp(x1,0,127) 53 | x2=clamp(x2,0,127) 54 | if x1=64 and fget(sprite,1) then 15 | mset(tx+x,ty+y,sprite-64) 16 | mset(second_sprite_map_x+x,second_sprite_map_y+y,sprite) 17 | else 18 | mset(second_sprite_map_x+x,second_sprite_map_y+y,0) 19 | end 20 | end 21 | end 22 | end 23 | 24 | function sprite_map_draw(ofs_x,ofs_y) 25 | map(sprite_map_x,sprite_map_y,ofs_x,ofs_y,64,32) 26 | end 27 | 28 | function second_sprite_map_draw(ofs_x,ofs_y) 29 | map(second_sprite_map_x,second_sprite_map_y,ofs_x,ofs_y,64,32) 30 | end 31 | -------------------------------------------------------------------------------- /picooffroad/game/tile_map.lua: -------------------------------------------------------------------------------- 1 | tiles_w=64 2 | tiles_h=64 3 | 4 | function tiles_init(compressed_map,waypoints_count,start_indexes) 5 | tiles_type={} 6 | tiles_height={} 7 | tiles_waypoints={} 8 | 9 | waypoints={} 10 | for i=1,waypoints_count do 11 | add(waypoints,{}) 12 | end 13 | 14 | dec={} 15 | local i=1 16 | while i<=#compressed_map do 17 | local c=ord(compressed_map,i) 18 | if c>=189 then 19 | add(dec,c) 20 | i+=1 21 | else 22 | local ofs=c-93 23 | c=ord(compressed_map,i+1) 24 | local l=c-32+3 25 | if l>=65 then 26 | l-=29 27 | end 28 | 29 | local start=#dec-ofs; 30 | for j=1,l do 31 | add(dec,dec[start+j]) 32 | end 33 | i+=2 34 | end 35 | end 36 | 37 | local tile,height 38 | for i=1,#dec do 39 | local v,waypoint=dec[i],-1 40 | if v==189 then 41 | tile=11 42 | elseif v==190 then 43 | tile=12 44 | elseif v<=205 then 45 | tile=11 46 | local tx,tz=tile_index_to_position(#tiles_type-1) 47 | waypoint=v-191 48 | add(waypoints[waypoint+1],tx) 49 | add(waypoints[waypoint+1],tz) 50 | elseif v<=230 then 51 | tile = (v-206)%5 + 1 52 | height = (v-206)\5*8 53 | else 54 | tile = (v-231)%5 + 1 + 5 55 | height = (v-231)\5*8 56 | end 57 | 58 | add(tiles_waypoints,waypoint) 59 | add(tiles_type,tile) 60 | add(tiles_height,height) 61 | end 62 | 63 | build_collision_solutions() 64 | 65 | tile_height_func={ 66 | tile_flat, 67 | tile_ascend_px, 68 | tile_ascend_mx, 69 | tile_ascend_pz, 70 | tile_ascend_mz, 71 | tile_flat, 72 | tile_ascend_px, 73 | tile_ascend_mx, 74 | tile_ascend_pz, 75 | tile_ascend_mz, 76 | tile_flat, 77 | tile_flat_rough, 78 | } 79 | 80 | start_positions={} 81 | for i=1,#start_indexes do 82 | local x,z=tile_index_to_position(start_indexes[i]) 83 | add(start_positions,x) 84 | add(start_positions,z) 85 | end 86 | end 87 | 88 | function build_collision_solutions() 89 | tile_cs={} 90 | for z=0,tiles_h-1 do 91 | for x=0,tiles_w-1 do 92 | local sx,sz=collision_solution(x,z,"11111111112202121120001011210111") 93 | add(tile_cs,sx) 94 | add(tile_cs,sz) 95 | end 96 | end 97 | 98 | local filtered_solution={} 99 | for z=0,tiles_h-1 do 100 | for x=0,tiles_w-1 do 101 | local sx,sz=collision_solution_filter(x,z) 102 | add(filtered_solution,sx) 103 | add(filtered_solution,sz) 104 | end 105 | end 106 | 107 | tile_cs=filtered_solution 108 | end 109 | 110 | function collision_solution(x,z,cmbn) 111 | local t=tiles_type[x+z*tiles_w+1] 112 | if not tile_is_obstacle(t) then 113 | return 0,0 114 | end 115 | 116 | local mx=tile_is_obstacle_number(get_tile_type(x-1,z)) 117 | local px=tile_is_obstacle_number(get_tile_type(x+1,z)) 118 | local mz=tile_is_obstacle_number(get_tile_type(x,z-1)) 119 | local pz=tile_is_obstacle_number(get_tile_type(x,z+1)) 120 | 121 | local index=1+mx+px*2+mz*4+pz*8 122 | return ord(cmbn,(index-1)*2+1)-49,ord(cmbn,(index-1)*2+2)-49 123 | end 124 | 125 | function collision_solution_filter(x,z) 126 | local t=tiles_type[x+z*tiles_w+1] 127 | if not tile_is_obstacle(t) then 128 | return 0,0 129 | end 130 | 131 | local sx,sz=get_collision_solution(x,z) 132 | if sx~=0 or sz~=0 then 133 | return sx,sz 134 | end 135 | 136 | local dx,dz 137 | dx,dz=get_collision_solution(x-1,z) 138 | sx+=dx sz+=dz 139 | dx,dz=get_collision_solution(x+1,z) 140 | sx+=dx sz+=dz 141 | dx,dz=get_collision_solution(x,z-1) 142 | sx+=dx sz+=dz 143 | dx,dz=get_collision_solution(x,z+1) 144 | sx+=dx sz+=dz 145 | 146 | if sx==0 and sz==0 then 147 | return 0,0 148 | end 149 | 150 | return normalize2d(sx,sz) 151 | end 152 | 153 | function get_tile_type(tx,tz) 154 | return tiles_type[tilec_rot(tx,tiles_w)+tilec_rot(tz,tiles_h)*tiles_w+1] 155 | end 156 | 157 | function get_collision_solution(tx,tz) 158 | local index=(tilec_rot(tx,tiles_w)+tilec_rot(tz,tiles_h)*tiles_w)*2+1 159 | return tile_cs[index],tile_cs[index+1] 160 | end 161 | 162 | function sample_collision_solution(x,z) 163 | local index=(tilec_rot(flr(x/8),tiles_w)+flr(z/8)*tiles_w)*2+1 164 | local sx,sz=tile_cs[index],tile_cs[index+1] 165 | if sx==nil or sz==nil then 166 | return 0,0 167 | end 168 | return sx,sz 169 | end 170 | 171 | function sample_tile_map(x,z) 172 | local tx=tilec_rot(flr(x/8),tiles_w) 173 | local tz=clamp(flr(z/8),0,tiles_h-1) 174 | local index=tx+tz*tiles_w+1 175 | return tiles_type[index],tile_height_func[tiles_type[index]](x%8,z%8)+tiles_height[index],tiles_waypoints[index] 176 | end 177 | 178 | function tilec_rot(x,w) 179 | if x<0 then x+=w end 180 | if x>=w then x-=w end 181 | return x 182 | end 183 | 184 | function tile_flat(x,z) 185 | return 0 186 | end 187 | function tile_flat_rough(x,z) 188 | return ((x>>1)^(z>>1))&1 189 | end 190 | function tile_ascend_px(x,z) 191 | return x 192 | end 193 | function tile_ascend_mx(x,z) 194 | return 7-x 195 | end 196 | function tile_ascend_pz(x,z) 197 | return z 198 | end 199 | function tile_ascend_mz(x,z) 200 | return 7-z 201 | end 202 | 203 | function tile_is_obstacle(t) 204 | return t>=6 and t<=10 205 | end 206 | 207 | function tile_is_obstacle_number(t) 208 | if tile_is_obstacle(t) then return 1 else return 0 end 209 | end 210 | 211 | function tile_is_dirt(t) 212 | return t==11 213 | end 214 | 215 | function height_is_water(y) 216 | return y<2 217 | end 218 | 219 | function tile_index_to_position(index) 220 | local x=index%tiles_w 221 | local z=index\tiles_w 222 | if x>=z\2 then 223 | x-=tiles_w 224 | end 225 | return x*8+4,z*8+4 226 | end 227 | 228 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /picooffroad/game/trophy.lua: -------------------------------------------------------------------------------- 1 | trophy_image=[[ ね ◝リ**❎w*1 ミ<ゃ2웃8♪6-n'_{:|ハ<う7スゆ/4!/4'ほ)6!6 み<⬇️4レ8'5♥6"5▥7ル8➡️◆6ノ=♥6テ@v6%=♪9テbソ3テ^⬅️を6ケ5テaソセ9ソfテソ=ソeテス:テbソ3テろ2ノり=テ9 9ソる;⬆️む9ソfテよ7⬇️る6チ7♥7テ5♥6テゃ:ツ9⬅️fソ3テ>る=ヒ>チ7テaソり@❎へ9ソfテや;█ら=ソeテ`タ>ツ2x9テbソ3テb~@マ=テ9 9ソむ=⬅️<ミ;ソfテよ:⬅️;ム8チ7♥7テ5♥6テcタ>♪_ツ^チe⬅️;テ4タ8チ9웃<チf⬅️5ヨ3ラ2z2🐱6セ`ソ6チ8sd♪3y4ス=☉2ツ7ソふe⬅️8テ2ソ3☉6"3/9🅾️8チg⬅️6ヲ4◜2チ6●9ト3⌂6テ5ロc⬅️9🅾️3▒9チ5タ3~1ツ5♪k⌂:ト3▒2░@チ2ソ3#m⬅️;♪4ツ3⬆️み4ス8タk⬅️9ト3チ<☉5タ3…2ヒn⌂7ト3⌂6♪4ツ2ウ5スふq⬅️6ナ3ス2テ8ト6♪2タu웃7ナ5ト2'8タ5チy⬅️7♪2ネ:タ▒ソ=テ6ツ4⬅️○ソ:♪1テ3フ☉ソ7ト3⬅️4ソ2♪⬇️セb♪웃⬅️4テ2ナ8⌂☉⬅️7テ⧗⬅️6ト6♪😐⌂3ト7タ◆⬅️5テˇ⬅️2ト1テˇ⌂◝◝◝◝◝◝◝◝◝◝◝◝◝◝>⬅️ひ∧ツ◝◝は2タッ4タˇツ◝◝7タ⧗ツ◝◝2ソ2!4ツ♪テ1✽8⬅️🅾️テねチねチrス5ソ6ト✽ナ2░^♪ねチねチさチ7シ:セ5ツ○…2🐱f♪ねチねチあチ%v ◝◝ソ/l *テ*k )◝◝◝◝◝◝ネ*)l ツs#◝◝コ#x ◝クね^セ]] 2 | 3 | function trophy_init() 4 | pal() 5 | pal(3,128,1) 6 | pal(15,7) 7 | 8 | if final_position==2 then 9 | pal(9,5) 10 | pal(10,6) 11 | elseif final_position==3 then 12 | pal(9,132,1) 13 | pal(10,4) 14 | pal(15,137,1) 15 | end 16 | 17 | lz77_decomp(0,0,80,112,trophy_image,sset) 18 | music(-1) 19 | sfx(57) 20 | 21 | dots={} 22 | for i=1,64 do 23 | add(dots,{x=rnd(128),y=rnd(128)-128}) 24 | end 25 | end 26 | 27 | function trophy_update() 28 | if btnp(5) then 29 | sfx(51) 30 | set_state(1) 31 | end 32 | end 33 | 34 | function trophy_draw() 35 | for y=-1,15 do 36 | for x=-1,15 do 37 | local ofs=(time()*16)%8 38 | rectfill(x*8+ofs,y*8+ofs,x*8+7+ofs,y*8+7+ofs,((x^^y)&1)) 39 | end 40 | end 41 | 42 | spr(0,24,2,10,14) 43 | 44 | print(posn[final_position],58,100,1) 45 | 46 | for i=1,64 do 47 | local dx=flr(rnd(5))-2 48 | local dy=flr(rnd(5))-2 49 | line(dots[i].x-dx,dots[i].y-dy,dots[i].x+dx,dots[i].y+dy,i%16) 50 | 51 | dots[i].y+=1 52 | if dots[i].y>=128 then 53 | dots[i].y = 0 54 | end 55 | end 56 | 57 | printo("❎ continue",44,120,7) 58 | end 59 | -------------------------------------------------------------------------------- /picooffroad/game/ui.lua: -------------------------------------------------------------------------------- 1 | title_image=[[ ね うこ'''ねね=ね6ひ◝セ1ら&ねふゃ'3わ5れ2)109(◝る3ふ5の&1み2#3(6オ◝や5ひま6.5シ5,◝も=*◝◝◝れ&は2#3(の&◝っ1わ2"6)72ためたあ3ョ2$e2@_7q:svて9め(6 7や>2@_8q9srめ<✽'り>2^_ン5ゃ5り3カ722"^/bs█め7-るbmes6 7しb0も∧め3ョ?❎`08いヲ''オ:^=ナ🅾️め4ャ5り6や2 h^^✽6○2y9ラ6/や?あ@ホi^@め3ュ6$6ケ8/:ラ5`2ネ🐱めレ`░1へ4 イ')2 1リ5'824z^/9s?q@░4$2め@すふ*ほ4'へ136す@/9`2x*ほ=░1ュ3░4#ほ*ほ2'6▤aリ;め;/`sc02りb^へ*1ル1◜6'ふ23もセ+%%⬆️や1めdむ3め#る∧やhむ2めは@チ+★や+hめ3サ#+れ!は🅾️やiめ1 2す_めふ%'⌂ゆ+#fめ2ゆ1セ#ん3や%♥や++iむ3め1し`トの ⌂やqめ#ん!の웃や+#oめ!cめ181ふ░や+lめ3セ#+ウ~や1🅾️a"#^!36v ▒へ_ん'+''4ほ_ケc3fやiて:█1の''6をd `:ゃ4け;◝5"7✽4+3む7ケ{ っ'%u ''へ7コラ!y %へ█ を%''!%eラ%!%%+'5 ふxみ:ミん$$は!a ふ+1_4!ひ>★み2>$4ね<め6ゆん''ゅ!ふ&'4 1ヌ%9➡️^ゆ=オ1ノ3▒ゅ1🅾️1ルウ2ˇ2!!は:めり>ア5め6やわ%''!%ろ%3#ひ%+'3 #の1っ2め3◆mや6め1やゅ$$4め2て@るひ#$5 2+4む5★bや5ケ>fを''1お?ま2ゅ2ウひ+'5 1ニ:め1ソを6れ9gゅ$$ひ6て6ひ7レは$5 2ク;めのhや>ヒを''ひ:む:!#16'5 1b+ゆ3⧗^ふ4め2ヲ!%%2ˇ3ヒを$1ほd◝#2サ:て2め$1 3➡️よ1セ;"3み%$4や1ハわx 2め%3め5ゆ3に2ふ4#>4)+time()*2)*4) & 7 60 | local c 61 | if f>3 then 62 | c=15-(f&3) 63 | else 64 | c=12+(f&3) 65 | end 66 | 67 | line(center_x,center_y,i,127,c) 68 | line(center_x,center_y,127-i,0,c) 69 | line(center_x,center_y,0,i,c) 70 | line(center_x,center_y,127,127-i,c) 71 | end 72 | 73 | map(0,0,0,4-4*abs(sin(time()*5)),16,4) 74 | map(0,4,0,32,16,8) 75 | 76 | if time()>2.5 then 77 | menu_draw(title_items,title_sel) 78 | else 79 | printo("by assembler bot (2021)",18,120,7) 80 | end 81 | end 82 | 83 | 84 | function menu_title() 85 | menu_init(title_items,function() return title_sel end, function(val) title_sel=val end, function() end) 86 | end 87 | 88 | function menu_tracks() 89 | menu_init(track_items,function() return track_sel end, function(val) track_sel=val end, function() menu_title() end) 90 | end 91 | 92 | function menu_setup() 93 | menu_init(setup_items,function() return setup_sel end, function(val) setup_sel=val end, function() menu_tracks() end) 94 | end 95 | 96 | function menu_init(items,get,set,back) 97 | menu=items 98 | menu_get_sel=get 99 | menu_set_sel=set 100 | menu_back=back 101 | end 102 | 103 | function menu_update() 104 | if btnp(0) then 105 | local left=menu[menu_get_sel()].l 106 | if left~=nil then sfx(50) left() end 107 | end 108 | 109 | if btnp(1) then 110 | local right=menu[menu_get_sel()].r 111 | if right~=nil then sfx(50) right() end 112 | end 113 | 114 | if btnp(2) then 115 | sfx(50) 116 | menu_set_sel(max(menu_get_sel()-1,1)) 117 | end 118 | 119 | if btnp(3) then 120 | sfx(50) 121 | menu_set_sel(min(menu_get_sel()+1,#menu)) 122 | end 123 | 124 | if btnp(4) then 125 | local enter=menu[menu_get_sel()].e 126 | if enter~=nil then sfx(51) enter() end 127 | end 128 | 129 | if btnp(5) then 130 | sfx(52) 131 | menu_back() 132 | end 133 | 134 | if game_state~=1 then return end 135 | for i=1,#menu do 136 | if menu[i].un~=nil then 137 | menu[i].n=menu[i].un() 138 | end 139 | end 140 | end 141 | 142 | function menu_draw() 143 | draw_shade(32,92,32,126,94,126,94,92) 144 | rect(32,92,96,126,0) 145 | 146 | for i=1,#menu do 147 | local x=(96+34-#menu[i].n*4)\2 148 | local y=(126+92-#menu*7)\2+(i-1)*8 149 | local nx=(96+34-#car_colors_default[player_color][3]*4)\2 150 | 151 | printo(car_colors_default[player_color][3],nx,85,11) 152 | 153 | if menu_get_sel()==i and menu[i].l~=nil then 154 | print("⬅️", 34, y, 2) 155 | print("➡️", 88, y, 2) 156 | end 157 | 158 | printo(menu[i].n, x, y, 7-5*is(menu_get_sel(),i)) 159 | end 160 | end 161 | 162 | function is(x,y) 163 | if x==y then return 1 end 164 | return 0 165 | end -------------------------------------------------------------------------------- /picooffroad/work/bitmaps/PicoOffRoadCar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/bitmaps/PicoOffRoadCar.png -------------------------------------------------------------------------------- /picooffroad/work/bitmaps/PicoOffRoadTitle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/bitmaps/PicoOffRoadTitle.png -------------------------------------------------------------------------------- /picooffroad/work/bitmaps/PicoOffRoad_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/bitmaps/PicoOffRoad_cover.png -------------------------------------------------------------------------------- /picooffroad/work/bitmaps/trophy.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/bitmaps/trophy.aseprite -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/bin/low_poly_car.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.83.0 OBJ File: 'low_poly_car.blend' 2 | # www.blender.org 3 | mtllib low_poly_car.mtl 4 | o Cylinder.001_Cylinder.004 5 | v -1.405268 0.732655 -0.683887 6 | v -1.405268 0.549445 -0.841422 7 | v -1.257430 0.488208 -0.841422 8 | v -1.012984 0.340370 -0.683887 9 | v -1.196194 0.340370 -0.841422 10 | v -1.257430 0.192532 -0.841422 11 | v -1.405268 -0.051914 -0.683887 12 | v -1.405268 0.131296 -0.841422 13 | v -1.553106 0.192532 -0.841422 14 | v -1.797553 0.340370 -0.683887 15 | v -1.614342 0.340370 -0.841422 16 | v -1.553106 0.488208 -0.841422 17 | v -1.127881 0.617757 -0.841422 18 | v -1.405268 0.732655 -0.841422 19 | v -1.012984 0.340370 -0.841422 20 | v -1.127881 0.062983 -0.841422 21 | v -1.405268 -0.051914 -0.841422 22 | v -1.682655 0.062983 -0.841422 23 | v -1.797553 0.340370 -0.841422 24 | v -1.682655 0.617757 -0.841422 25 | v 1.929369 0.996140 0.489422 26 | v 2.053456 0.321220 0.613508 27 | v -1.941691 0.887796 0.613508 28 | v -2.020102 0.533846 0.517852 29 | v 1.929369 0.996140 -0.484336 30 | v 2.053456 0.321220 -0.608422 31 | v -1.941691 0.887796 -0.608422 32 | v -2.025763 0.557363 -0.499566 33 | v -0.871305 0.272162 -0.608422 34 | v -0.805532 1.056898 0.481684 35 | v -0.805533 1.056898 -0.476598 36 | v -0.871305 0.272162 0.613508 37 | v 0.633852 0.996140 -0.608422 38 | v 0.633852 0.272162 0.613508 39 | v 0.633852 0.272162 -0.608422 40 | v 0.633852 0.996140 0.613508 41 | v 0.633852 1.447706 0.455402 42 | v -0.448248 1.386948 0.366124 43 | v -0.448248 1.386948 -0.361038 44 | v 0.633852 1.447706 -0.450316 45 | v 2.053456 0.996140 -0.608422 46 | v 2.053456 0.996140 0.613508 47 | v 0.757938 0.724121 -0.484336 48 | v 1.929369 0.724121 -0.484336 49 | v 1.929369 0.724121 0.489422 50 | v 0.757939 0.724121 0.489422 51 | v -2.120883 0.560536 -0.372364 52 | v -2.120883 0.833919 -0.372364 53 | v -2.120883 0.833919 0.377450 54 | v -2.120883 0.553222 0.377450 55 | v -0.871305 0.996140 -0.608422 56 | v -0.871305 0.996140 0.613508 57 | v -0.382476 1.447706 -0.450316 58 | v -0.382476 1.447706 0.455402 59 | v -1.941691 0.272162 -0.608422 60 | v -1.941691 0.272162 0.613508 61 | v -2.120883 0.561140 -0.301710 62 | v -2.120883 0.745808 -0.301710 63 | v -2.120883 0.745808 0.306796 64 | v -2.120883 0.561140 0.306796 65 | v -2.120883 0.277310 -0.372364 66 | v -2.120883 0.277310 0.377450 67 | v -1.405268 0.732655 0.707552 68 | v -1.405268 0.549445 0.865087 69 | v -1.012984 0.340370 0.707552 70 | v -1.257430 0.488208 0.865087 71 | v -1.196194 0.340370 0.865087 72 | v -1.405268 -0.051914 0.707552 73 | v -1.257430 0.192532 0.865087 74 | v -1.405268 0.131296 0.865087 75 | v -1.797553 0.340370 0.707552 76 | v -1.553106 0.192532 0.865087 77 | v -1.614342 0.340370 0.865087 78 | v -1.553106 0.488208 0.865087 79 | v -1.127881 0.617757 0.865087 80 | v -1.405268 0.732655 0.865087 81 | v -1.012984 0.340370 0.865087 82 | v -1.127881 0.062983 0.865087 83 | v -1.405268 -0.051914 0.865087 84 | v -1.682655 0.062983 0.865087 85 | v -1.797553 0.340370 0.865087 86 | v -1.682655 0.617757 0.865087 87 | v 1.165234 0.732655 0.707552 88 | v 1.165234 0.549445 0.865087 89 | v 1.557518 0.340370 0.707552 90 | v 1.313072 0.488208 0.865087 91 | v 1.374308 0.340370 0.865087 92 | v 1.165234 -0.051914 0.707552 93 | v 1.313072 0.192532 0.865087 94 | v 1.165234 0.131296 0.865087 95 | v 0.772949 0.340370 0.707552 96 | v 1.017396 0.192532 0.865087 97 | v 0.956159 0.340370 0.865087 98 | v 1.017396 0.488208 0.865087 99 | v 1.442621 0.617757 0.865087 100 | v 1.165234 0.732655 0.865087 101 | v 1.557518 0.340370 0.865087 102 | v 1.442621 0.062983 0.865087 103 | v 1.165234 -0.051914 0.865087 104 | v 0.887847 0.062983 0.865087 105 | v 0.772949 0.340370 0.865087 106 | v 0.887847 0.617757 0.865087 107 | v 1.165234 0.732655 -0.683887 108 | v 1.165234 0.549445 -0.841422 109 | v 1.313072 0.488208 -0.841422 110 | v 1.557518 0.340370 -0.683887 111 | v 1.374308 0.340370 -0.841422 112 | v 1.313072 0.192532 -0.841422 113 | v 1.165234 -0.051914 -0.683887 114 | v 1.165234 0.131296 -0.841422 115 | v 1.017396 0.192532 -0.841422 116 | v 0.772949 0.340370 -0.683887 117 | v 0.956159 0.340370 -0.841422 118 | v 1.017396 0.488208 -0.841422 119 | v 1.442621 0.617757 -0.841422 120 | v 1.165234 0.732655 -0.841422 121 | v 1.557518 0.340370 -0.841422 122 | v 1.442621 0.062983 -0.841422 123 | v 1.165234 -0.051914 -0.841422 124 | v 0.887847 0.062983 -0.841422 125 | v 0.772949 0.340370 -0.841422 126 | v 0.887847 0.617757 -0.841422 127 | v 0.666579 1.243801 0.485637 128 | v 0.657690 1.391222 0.485637 129 | v 0.666579 1.243801 -0.485637 130 | v 0.657690 1.391222 -0.485637 131 | v 0.725818 1.165165 0.345687 132 | v 0.822222 1.277050 0.345687 133 | v 0.725818 1.165165 -0.342095 134 | v 0.822222 1.277051 -0.342095 135 | v 1.313989 0.880794 -0.485637 136 | v 1.210657 0.775274 -0.342096 137 | v 1.313989 0.880794 0.345687 138 | v 1.313989 0.880794 0.485637 139 | v 1.210657 0.775274 0.345687 140 | v 1.313989 0.880794 -0.342096 141 | v 1.343654 0.272162 0.613508 142 | v 1.343654 0.272162 -0.608422 143 | v -1.406498 0.272162 -0.608422 144 | v -1.406498 0.272162 0.613508 145 | v 1.226246 0.966717 0.485637 146 | v 1.227453 0.965536 0.345687 147 | v 1.028914 0.953247 0.485637 148 | v 1.021208 0.960794 0.345687 149 | v 1.203384 0.989105 -0.342096 150 | v 1.207328 0.985243 -0.485637 151 | v 1.004357 0.977295 -0.485637 152 | v 0.996490 0.984999 -0.342096 153 | usemtl 11.003 154 | s off 155 | f 51 23 52 156 | f 40 54 37 157 | f 25 42 41 158 | f 21 36 42 159 | f 27 49 23 160 | f 31 52 30 161 | f 38 53 39 162 | f 30 54 38 163 | f 31 53 51 164 | f 37 36 33 165 | f 37 33 40 166 | f 33 25 41 167 | f 51 27 23 168 | f 40 53 54 169 | f 25 21 42 170 | f 27 48 49 171 | f 31 51 52 172 | f 38 54 53 173 | f 30 52 54 174 | f 31 39 53 175 | usemtl 0.003 176 | f 1 13 14 177 | f 4 13 1 178 | f 4 16 15 179 | f 7 16 4 180 | f 7 18 17 181 | f 10 18 7 182 | f 10 20 19 183 | f 1 20 10 184 | f 2 13 3 185 | f 13 5 3 186 | f 5 16 6 187 | f 16 8 6 188 | f 8 18 9 189 | f 18 11 9 190 | f 11 20 12 191 | f 20 2 12 192 | f 30 39 31 193 | f 36 54 52 194 | f 33 53 40 195 | f 44 46 45 196 | f 59 57 60 197 | f 63 75 65 198 | f 65 75 77 199 | f 65 78 68 200 | f 68 78 79 201 | f 68 80 71 202 | f 71 80 81 203 | f 71 82 63 204 | f 63 82 76 205 | f 66 76 64 206 | f 67 75 66 207 | f 67 78 77 208 | f 70 78 69 209 | f 70 80 79 210 | f 73 80 72 211 | f 73 82 81 212 | f 64 82 74 213 | f 83 95 85 214 | f 85 95 97 215 | f 85 98 88 216 | f 88 98 99 217 | f 88 100 91 218 | f 91 100 101 219 | f 91 102 83 220 | f 83 102 96 221 | f 86 96 84 222 | f 87 95 86 223 | f 87 98 97 224 | f 90 98 89 225 | f 90 100 99 226 | f 93 100 92 227 | f 94 101 93 228 | f 84 102 94 229 | f 103 115 116 230 | f 106 115 103 231 | f 106 118 117 232 | f 109 118 106 233 | f 109 120 119 234 | f 112 120 109 235 | f 112 122 121 236 | f 103 122 112 237 | f 104 115 105 238 | f 115 107 105 239 | f 107 118 108 240 | f 118 110 108 241 | f 110 120 111 242 | f 111 121 113 243 | f 121 114 113 244 | f 122 104 114 245 | f 4 15 13 246 | f 7 17 16 247 | f 10 19 18 248 | f 1 14 20 249 | f 2 14 13 250 | f 13 15 5 251 | f 5 15 16 252 | f 16 17 8 253 | f 8 17 18 254 | f 18 19 11 255 | f 11 19 20 256 | f 20 14 2 257 | f 30 38 39 258 | f 36 37 54 259 | f 33 51 53 260 | f 44 43 46 261 | f 59 58 57 262 | f 63 76 75 263 | f 65 77 78 264 | f 68 79 80 265 | f 71 81 82 266 | f 66 75 76 267 | f 67 77 75 268 | f 67 69 78 269 | f 70 79 78 270 | f 70 72 80 271 | f 73 81 80 272 | f 73 74 82 273 | f 64 76 82 274 | f 83 96 95 275 | f 85 97 98 276 | f 88 99 100 277 | f 91 101 102 278 | f 86 95 96 279 | f 87 97 95 280 | f 87 89 98 281 | f 90 99 98 282 | f 90 92 100 283 | f 93 101 100 284 | f 94 102 101 285 | f 84 96 102 286 | f 106 117 115 287 | f 109 119 118 288 | f 112 121 120 289 | f 103 116 122 290 | f 104 116 115 291 | f 115 117 107 292 | f 107 117 118 293 | f 118 119 110 294 | f 110 119 120 295 | f 111 120 121 296 | f 121 122 114 297 | f 122 116 104 298 | usemtl 7.003 299 | f 24 49 50 300 | f 28 48 27 301 | f 130 146 126 302 | f 130 124 128 303 | f 128 141 142 304 | f 142 134 133 305 | f 146 136 131 306 | f 24 23 49 307 | f 28 47 48 308 | f 130 145 146 309 | f 130 126 124 310 | f 128 124 141 311 | f 142 141 134 312 | f 146 145 136 313 | usemtl 3.003 314 | f 138 41 26 315 | f 140 23 56 316 | f 41 22 26 317 | f 34 52 32 318 | f 139 51 29 319 | f 36 43 33 320 | f 137 36 34 321 | f 51 35 29 322 | f 25 45 21 323 | f 25 43 44 324 | f 28 27 55 325 | f 23 24 56 326 | f 24 62 56 327 | f 28 61 47 328 | f 58 48 47 329 | f 60 62 50 330 | f 59 48 58 331 | f 57 62 60 332 | f 21 46 36 333 | f 22 42 137 334 | f 33 138 35 335 | f 55 27 139 336 | f 32 52 140 337 | f 23 140 52 338 | f 139 27 51 339 | f 41 42 22 340 | f 34 36 52 341 | f 36 46 43 342 | f 137 42 36 343 | f 51 33 35 344 | f 25 44 45 345 | f 25 33 43 346 | f 24 50 62 347 | f 28 55 61 348 | f 61 57 47 349 | f 57 58 47 350 | f 49 59 50 351 | f 59 60 50 352 | f 59 49 48 353 | f 57 61 62 354 | f 21 45 46 355 | f 33 41 138 356 | usemtl 6.003 357 | f 5 8 11 358 | f 70 69 67 359 | f 90 89 87 360 | f 107 110 113 361 | f 130 127 129 362 | f 128 144 127 363 | f 126 147 125 364 | f 130 148 145 365 | f 124 143 141 366 | f 142 135 144 367 | f 145 132 136 368 | f 2 3 5 369 | f 5 6 8 370 | f 8 9 11 371 | f 11 12 2 372 | f 2 5 11 373 | f 67 66 64 374 | f 64 74 67 375 | f 74 73 67 376 | f 73 72 67 377 | f 72 70 67 378 | f 87 86 93 379 | f 86 84 93 380 | f 84 94 93 381 | f 93 92 87 382 | f 92 90 87 383 | f 104 105 107 384 | f 107 108 110 385 | f 110 111 113 386 | f 113 114 104 387 | f 104 107 113 388 | f 130 128 127 389 | f 128 142 144 390 | f 126 146 147 391 | f 130 129 148 392 | f 124 123 143 393 | f 142 133 135 394 | f 145 148 132 395 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/bin/out.lua: -------------------------------------------------------------------------------- 1 | car_vertices={ 2 | -1.405268,-0.732655,-0.683887 3 | ,-1.405268,-0.549445,-0.841422 4 | ,-1.257430,-0.488208,-0.841422 5 | ,-1.012984,-0.34037,-0.683887 6 | ,-1.196194,-0.34037,-0.841422 7 | ,-1.257430,-0.192532,-0.841422 8 | ,-1.405268,0.051914,-0.683887 9 | ,-1.405268,-0.131296,-0.841422 10 | ,-1.553106,-0.192532,-0.841422 11 | ,-1.797553,-0.34037,-0.683887 12 | ,-1.614342,-0.34037,-0.841422 13 | ,-1.553106,-0.488208,-0.841422 14 | ,-1.127881,-0.617757,-0.841422 15 | ,-1.405268,-0.732655,-0.841422 16 | ,-1.012984,-0.34037,-0.841422 17 | ,-1.127881,-0.062983,-0.841422 18 | ,-1.405268,0.051914,-0.841422 19 | ,-1.682655,-0.062983,-0.841422 20 | ,-1.797553,-0.34037,-0.841422 21 | ,-1.682655,-0.617757,-0.841422 22 | ,1.929369,-0.99614,0.489422 23 | ,2.053456,-0.32122,0.613508 24 | ,-1.941691,-0.887796,0.613508 25 | ,-2.020102,-0.533846,0.517852 26 | ,1.929369,-0.99614,-0.484336 27 | ,2.053456,-0.32122,-0.608422 28 | ,-1.941691,-0.887796,-0.608422 29 | ,-2.025763,-0.557363,-0.499566 30 | ,-0.871305,-0.272162,-0.608422 31 | ,-0.805532,-1.0569,0.481684 32 | ,-0.805533,-1.0569,-0.476598 33 | ,-0.871305,-0.272162,0.613508 34 | ,0.633852,-0.99614,-0.608422 35 | ,0.633852,-0.272162,0.613508 36 | ,0.633852,-0.272162,-0.608422 37 | ,0.633852,-0.99614,0.613508 38 | ,0.633852,-1.44771,0.455402 39 | ,-0.448248,-1.38695,0.366124 40 | ,-0.448248,-1.38695,-0.361038 41 | ,0.633852,-1.44771,-0.450316 42 | ,2.053456,-0.99614,-0.608422 43 | ,2.053456,-0.99614,0.613508 44 | ,0.757938,-0.724121,-0.484336 45 | ,1.929369,-0.724121,-0.484336 46 | ,1.929369,-0.724121,0.489422 47 | ,0.757939,-0.724121,0.489422 48 | ,-2.120883,-0.560536,-0.372364 49 | ,-2.120883,-0.833919,-0.372364 50 | ,-2.120883,-0.833919,0.377450 51 | ,-2.120883,-0.553222,0.377450 52 | ,-0.871305,-0.99614,-0.608422 53 | ,-0.871305,-0.99614,0.613508 54 | ,-0.382476,-1.44771,-0.450316 55 | ,-0.382476,-1.44771,0.455402 56 | ,-1.941691,-0.272162,-0.608422 57 | ,-1.941691,-0.272162,0.613508 58 | ,-2.120883,-0.56114,-0.301710 59 | ,-2.120883,-0.745808,-0.301710 60 | ,-2.120883,-0.745808,0.306796 61 | ,-2.120883,-0.56114,0.306796 62 | ,-2.120883,-0.27731,-0.372364 63 | ,-2.120883,-0.27731,0.377450 64 | ,-1.405268,-0.732655,0.707552 65 | ,-1.405268,-0.549445,0.865087 66 | ,-1.012984,-0.34037,0.707552 67 | ,-1.257430,-0.488208,0.865087 68 | ,-1.196194,-0.34037,0.865087 69 | ,-1.405268,0.051914,0.707552 70 | ,-1.257430,-0.192532,0.865087 71 | ,-1.405268,-0.131296,0.865087 72 | ,-1.797553,-0.34037,0.707552 73 | ,-1.553106,-0.192532,0.865087 74 | ,-1.614342,-0.34037,0.865087 75 | ,-1.553106,-0.488208,0.865087 76 | ,-1.127881,-0.617757,0.865087 77 | ,-1.405268,-0.732655,0.865087 78 | ,-1.012984,-0.34037,0.865087 79 | ,-1.127881,-0.062983,0.865087 80 | ,-1.405268,0.051914,0.865087 81 | ,-1.682655,-0.062983,0.865087 82 | ,-1.797553,-0.34037,0.865087 83 | ,-1.682655,-0.617757,0.865087 84 | ,1.165234,-0.732655,0.707552 85 | ,1.165234,-0.549445,0.865087 86 | ,1.557518,-0.34037,0.707552 87 | ,1.313072,-0.488208,0.865087 88 | ,1.374308,-0.34037,0.865087 89 | ,1.165234,0.051914,0.707552 90 | ,1.313072,-0.192532,0.865087 91 | ,1.165234,-0.131296,0.865087 92 | ,0.772949,-0.34037,0.707552 93 | ,1.017396,-0.192532,0.865087 94 | ,0.956159,-0.34037,0.865087 95 | ,1.017396,-0.488208,0.865087 96 | ,1.442621,-0.617757,0.865087 97 | ,1.165234,-0.732655,0.865087 98 | ,1.557518,-0.34037,0.865087 99 | ,1.442621,-0.062983,0.865087 100 | ,1.165234,0.051914,0.865087 101 | ,0.887847,-0.062983,0.865087 102 | ,0.772949,-0.34037,0.865087 103 | ,0.887847,-0.617757,0.865087 104 | ,1.165234,-0.732655,-0.683887 105 | ,1.165234,-0.549445,-0.841422 106 | ,1.313072,-0.488208,-0.841422 107 | ,1.557518,-0.34037,-0.683887 108 | ,1.374308,-0.34037,-0.841422 109 | ,1.313072,-0.192532,-0.841422 110 | ,1.165234,0.051914,-0.683887 111 | ,1.165234,-0.131296,-0.841422 112 | ,1.017396,-0.192532,-0.841422 113 | ,0.772949,-0.34037,-0.683887 114 | ,0.956159,-0.34037,-0.841422 115 | ,1.017396,-0.488208,-0.841422 116 | ,1.442621,-0.617757,-0.841422 117 | ,1.165234,-0.732655,-0.841422 118 | ,1.557518,-0.34037,-0.841422 119 | ,1.442621,-0.062983,-0.841422 120 | ,1.165234,0.051914,-0.841422 121 | ,0.887847,-0.062983,-0.841422 122 | ,0.772949,-0.34037,-0.841422 123 | ,0.887847,-0.617757,-0.841422 124 | ,0.666579,-1.2438,0.485637 125 | ,0.657690,-1.39122,0.485637 126 | ,0.666579,-1.2438,-0.485637 127 | ,0.657690,-1.39122,-0.485637 128 | ,0.725818,-1.16516,0.345687 129 | ,0.822222,-1.27705,0.345687 130 | ,0.725818,-1.16516,-0.342095 131 | ,0.822222,-1.27705,-0.342095 132 | ,1.313989,-0.880794,-0.485637 133 | ,1.210657,-0.775274,-0.342096 134 | ,1.313989,-0.880794,0.345687 135 | ,1.313989,-0.880794,0.485637 136 | ,1.210657,-0.775274,0.345687 137 | ,1.313989,-0.880794,-0.342096 138 | ,1.343654,-0.272162,0.613508 139 | ,1.343654,-0.272162,-0.608422 140 | ,-1.406498,-0.272162,-0.608422 141 | ,-1.406498,-0.272162,0.613508 142 | ,1.226246,-0.966717,0.485637 143 | ,1.227453,-0.965536,0.345687 144 | ,1.028914,-0.953247,0.485637 145 | ,1.021208,-0.960794,0.345687 146 | ,1.203384,-0.989105,-0.342096 147 | ,1.207328,-0.985243,-0.485637 148 | ,1.004357,-0.977295,-0.485637 149 | ,0.996490,-0.984999,-0.342096 150 | } 151 | car_triangles={ 152 | 50,22,5111.003 153 | ,39,53,3611.003 154 | ,24,41,4011.003 155 | ,20,35,4111.003 156 | ,26,48,2211.003 157 | ,30,51,2911.003 158 | ,37,52,3811.003 159 | ,29,53,3711.003 160 | ,30,52,5011.003 161 | ,36,35,3211.003 162 | ,36,32,3911.003 163 | ,32,24,4011.003 164 | ,50,26,2211.003 165 | ,39,52,5311.003 166 | ,24,20,4111.003 167 | ,26,47,4811.003 168 | ,30,50,5111.003 169 | ,37,53,5211.003 170 | ,29,51,5311.003 171 | ,30,38,5211.003 172 | ,0,12,130.003 173 | ,3,12,00.003 174 | ,3,15,140.003 175 | ,6,15,30.003 176 | ,6,17,160.003 177 | ,9,17,60.003 178 | ,9,19,180.003 179 | ,0,19,90.003 180 | ,1,12,20.003 181 | ,12,4,20.003 182 | ,4,15,50.003 183 | ,15,7,50.003 184 | ,7,17,80.003 185 | ,17,10,80.003 186 | ,10,19,110.003 187 | ,19,1,110.003 188 | ,29,38,300.003 189 | ,35,53,510.003 190 | ,32,52,390.003 191 | ,43,45,440.003 192 | ,58,56,590.003 193 | ,62,74,640.003 194 | ,64,74,760.003 195 | ,64,77,670.003 196 | ,67,77,780.003 197 | ,67,79,700.003 198 | ,70,79,800.003 199 | ,70,81,620.003 200 | ,62,81,750.003 201 | ,65,75,630.003 202 | ,66,74,650.003 203 | ,66,77,760.003 204 | ,69,77,680.003 205 | ,69,79,780.003 206 | ,72,79,710.003 207 | ,72,81,800.003 208 | ,63,81,730.003 209 | ,82,94,840.003 210 | ,84,94,960.003 211 | ,84,97,870.003 212 | ,87,97,980.003 213 | ,87,99,900.003 214 | ,90,99,1000.003 215 | ,90,101,820.003 216 | ,82,101,950.003 217 | ,85,95,830.003 218 | ,86,94,850.003 219 | ,86,97,960.003 220 | ,89,97,880.003 221 | ,89,99,980.003 222 | ,92,99,910.003 223 | ,93,100,920.003 224 | ,83,101,930.003 225 | ,102,114,1150.003 226 | ,105,114,1020.003 227 | ,105,117,1160.003 228 | ,108,117,1050.003 229 | ,108,119,1180.003 230 | ,111,119,1080.003 231 | ,111,121,1200.003 232 | ,102,121,1110.003 233 | ,103,114,1040.003 234 | ,114,106,1040.003 235 | ,106,117,1070.003 236 | ,117,109,1070.003 237 | ,109,119,1100.003 238 | ,110,120,1120.003 239 | ,120,113,1120.003 240 | ,121,103,1130.003 241 | ,3,14,120.003 242 | ,6,16,150.003 243 | ,9,18,170.003 244 | ,0,13,190.003 245 | ,1,13,120.003 246 | ,12,14,40.003 247 | ,4,14,150.003 248 | ,15,16,70.003 249 | ,7,16,170.003 250 | ,17,18,100.003 251 | ,10,18,190.003 252 | ,19,13,10.003 253 | ,29,37,380.003 254 | ,35,36,530.003 255 | ,32,50,520.003 256 | ,43,42,450.003 257 | ,58,57,560.003 258 | ,62,75,740.003 259 | ,64,76,770.003 260 | ,67,78,790.003 261 | ,70,80,810.003 262 | ,65,74,750.003 263 | ,66,76,740.003 264 | ,66,68,770.003 265 | ,69,78,770.003 266 | ,69,71,790.003 267 | ,72,80,790.003 268 | ,72,73,810.003 269 | ,63,75,810.003 270 | ,82,95,940.003 271 | ,84,96,970.003 272 | ,87,98,990.003 273 | ,90,100,1010.003 274 | ,85,94,950.003 275 | ,86,96,940.003 276 | ,86,88,970.003 277 | ,89,98,970.003 278 | ,89,91,990.003 279 | ,92,100,990.003 280 | ,93,101,1000.003 281 | ,83,95,1010.003 282 | ,105,116,1140.003 283 | ,108,118,1170.003 284 | ,111,120,1190.003 285 | ,102,115,1210.003 286 | ,103,115,1140.003 287 | ,114,116,1060.003 288 | ,106,116,1170.003 289 | ,117,118,1090.003 290 | ,109,118,1190.003 291 | ,110,119,1200.003 292 | ,120,121,1130.003 293 | ,121,115,1030.003 294 | ,23,48,497.003 295 | ,27,47,267.003 296 | ,129,145,1257.003 297 | ,129,123,1277.003 298 | ,127,140,1417.003 299 | ,141,133,1327.003 300 | ,145,135,1307.003 301 | ,23,22,487.003 302 | ,27,46,477.003 303 | ,129,144,1457.003 304 | ,129,125,1237.003 305 | ,127,123,1407.003 306 | ,141,140,1337.003 307 | ,145,144,1357.003 308 | ,137,40,253.003 309 | ,139,22,553.003 310 | ,40,21,253.003 311 | ,33,51,313.003 312 | ,138,50,283.003 313 | ,35,42,323.003 314 | ,136,35,333.003 315 | ,50,34,283.003 316 | ,24,44,203.003 317 | ,24,42,433.003 318 | ,27,26,543.003 319 | ,22,23,553.003 320 | ,23,61,553.003 321 | ,27,60,463.003 322 | ,57,47,463.003 323 | ,59,61,493.003 324 | ,58,47,573.003 325 | ,56,61,593.003 326 | ,20,45,353.003 327 | ,21,41,1363.003 328 | ,32,137,343.003 329 | ,54,26,1383.003 330 | ,31,51,1393.003 331 | ,22,139,513.003 332 | ,138,26,503.003 333 | ,40,41,213.003 334 | ,33,35,513.003 335 | ,35,45,423.003 336 | ,136,41,353.003 337 | ,50,32,343.003 338 | ,24,43,443.003 339 | ,24,32,423.003 340 | ,23,49,613.003 341 | ,27,54,603.003 342 | ,60,56,463.003 343 | ,56,57,463.003 344 | ,48,58,493.003 345 | ,58,59,493.003 346 | ,58,48,473.003 347 | ,56,60,613.003 348 | ,20,44,453.003 349 | ,32,40,1373.003 350 | ,4,7,106.003 351 | ,69,68,666.003 352 | ,89,88,866.003 353 | ,106,109,1126.003 354 | ,129,126,1286.003 355 | ,127,143,1266.003 356 | ,125,146,1246.003 357 | ,129,147,1446.003 358 | ,123,142,1406.003 359 | ,141,134,1436.003 360 | ,144,131,1356.003 361 | ,1,2,46.003 362 | ,4,5,76.003 363 | ,7,8,106.003 364 | ,10,11,16.003 365 | ,1,4,106.003 366 | ,66,65,636.003 367 | ,63,73,666.003 368 | ,73,72,666.003 369 | ,72,71,666.003 370 | ,71,69,666.003 371 | ,86,85,926.003 372 | ,85,83,926.003 373 | ,83,93,926.003 374 | ,92,91,866.003 375 | ,91,89,866.003 376 | ,103,104,1066.003 377 | ,106,107,1096.003 378 | ,109,110,1126.003 379 | ,112,113,1036.003 380 | ,103,106,1126.003 381 | ,129,127,1266.003 382 | ,127,141,1436.003 383 | ,125,145,1466.003 384 | ,129,128,1476.003 385 | ,123,122,1426.003 386 | ,141,132,1346.003 387 | ,144,147,1316.003 388 | } 389 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/clean.bat: -------------------------------------------------------------------------------- 1 | rem bin 2 | del bin\*.pdb 3 | del bin\*.iobj 4 | del bin\*.ipdb 5 | del bin\*.ilk 6 | del bin\Pico8ObjToLua_d.exe 7 | del bin\Pico8ObjToLua_x64_d.exe 8 | 9 | rem vs2013 10 | rmdir /S /Q project\vs2013\debug 11 | rmdir /S /Q project\vs2013\release 12 | rmdir /S /Q project\vs2013\ipch 13 | rmdir /S /Q project\vs2013\x64 14 | del project\vs2013\*.ncb 15 | del project\vs2013\*.aps 16 | del project\vs2013\*.sdf 17 | attrib -H project\vs2013\Pico8ObjToLua.v12.suo 18 | del project\vs2013\Pico8ObjToLua.v12.suo 19 | 20 | rem vs2015 21 | rmdir /S /Q project\vs2015\debug 22 | rmdir /S /Q project\vs2015\release 23 | rmdir /S /Q project\vs2015\ipch 24 | rmdir /S /Q project\vs2015\x64 25 | rmdir /S /Q project\vs2015\.vs 26 | del project\vs2015\*.ncb 27 | del project\vs2015\*.aps 28 | del project\vs2015\*.sdf 29 | del project\vs2015\*.db 30 | attrib -H project\vs2015\Pico8ObjToLua.v12.suo 31 | del project\vs2015\Pico8ObjToLua.v12.suo 32 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2013/Pico8ObjToLua.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2013 for Windows Desktop 4 | VisualStudioVersion = 12.0.30110.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pico8ObjToLua", "Pico8ObjToLua.vcxproj", "{CE65BF3B-0790-430F-BEE8-071E1CC11CF6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.Build.0 = Debug|Win32 16 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.ActiveCfg = Release|Win32 17 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2013/Pico8ObjToLua.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6} 15 | Win32Proj 16 | Pico8ObjToLua 17 | 18 | 19 | 20 | Application 21 | true 22 | v120 23 | MultiByte 24 | 25 | 26 | Application 27 | false 28 | v120 29 | true 30 | MultiByte 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | true 44 | $(SolutionDir)..\..\bin\ 45 | $(ProjectName)_d 46 | 47 | 48 | false 49 | $(SolutionDir)..\..\bin\ 50 | 51 | 52 | 53 | 54 | 55 | Level3 56 | Disabled 57 | WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 58 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 59 | 60 | 61 | Console 62 | true 63 | $(OutDir)$(TargetName)$(TargetExt) 64 | 65 | 66 | 67 | 68 | Level3 69 | 70 | 71 | MaxSpeed 72 | true 73 | true 74 | WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 75 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 76 | 77 | 78 | Console 79 | true 80 | true 81 | true 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2013/Pico8ObjToLua.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {51dad393-d5f6-4884-8ba1-b773380e1aa2} 6 | 7 | 8 | {61552505-2166-4f7b-b231-d308d5163877} 9 | 10 | 11 | 12 | 13 | src 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2015/Pico8ObjToLua.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25123.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pico8ObjToLua", "Pico8ObjToLua.vcxproj", "{CE65BF3B-0790-430F-BEE8-071E1CC11CF6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Debug|x64 = Debug|x64 12 | Release|Win32 = Release|Win32 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.ActiveCfg = Debug|Win32 17 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.Build.0 = Debug|Win32 18 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|x64.ActiveCfg = Debug|x64 19 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|x64.Build.0 = Debug|x64 20 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.ActiveCfg = Release|Win32 21 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.Build.0 = Release|Win32 22 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|x64.ActiveCfg = Release|x64 23 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|x64.Build.0 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2015/Pico8ObjToLua.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | Release 14 | Win32 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6} 23 | Win32Proj 24 | Pico8ObjToLua 25 | 10.0.17763.0 26 | 27 | 28 | 29 | Application 30 | true 31 | v141 32 | MultiByte 33 | 34 | 35 | Application 36 | true 37 | v141 38 | MultiByte 39 | 40 | 41 | Application 42 | false 43 | v141 44 | true 45 | MultiByte 46 | 47 | 48 | Application 49 | false 50 | v141 51 | true 52 | MultiByte 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | true 72 | $(SolutionDir)..\..\bin\ 73 | $(ProjectName)_d 74 | 75 | 76 | $(ProjectName)_x64_d 77 | true 78 | $(SolutionDir)..\..\bin\ 79 | 80 | 81 | false 82 | $(SolutionDir)..\..\bin\ 83 | 84 | 85 | false 86 | $(ProjectName)_x64 87 | $(SolutionDir)..\..\bin\ 88 | 89 | 90 | 91 | 92 | 93 | Level3 94 | Disabled 95 | WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 96 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 97 | 98 | 99 | Console 100 | true 101 | $(OutDir)$(TargetName)$(TargetExt) 102 | 103 | 104 | 105 | 106 | 107 | 108 | Level3 109 | Disabled 110 | _WINDOWS;WIN64;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 111 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 112 | 113 | 114 | Console 115 | true 116 | $(OutDir)$(TargetName)$(TargetExt) 117 | 118 | 119 | 120 | 121 | Level3 122 | 123 | 124 | MaxSpeed 125 | true 126 | true 127 | WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 128 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 129 | 130 | 131 | Console 132 | true 133 | true 134 | true 135 | 136 | 137 | 138 | 139 | Level3 140 | 141 | 142 | MaxSpeed 143 | true 144 | true 145 | _WINDOWS;WIN64;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 146 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 147 | 148 | 149 | Console 150 | true 151 | true 152 | true 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2015/Pico8ObjToLua.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {51dad393-d5f6-4884-8ba1-b773380e1aa2} 6 | 7 | 8 | 9 | 10 | src 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/project/vs2015/Pico8ObjToLua.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | low_poly_car.obj out.lua car_ 5 | $(ProjectDir)../../bin 6 | WindowsLocalDebugger 7 | 8 | 9 | low_poly_car.obj out.lua car_ 10 | $(ProjectDir)../../bin 11 | WindowsLocalDebugger 12 | 13 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int main(int argc, const char *argv[]) 6 | { 7 | if(argc != 4) 8 | { 9 | std::cout << "Usage: in.obj out.lua variable_name_prefix\n"; 10 | return 0; 11 | } 12 | 13 | std::ifstream in_file(argv[1]); 14 | if(!in_file.is_open()) 15 | { 16 | std::cout << "Cannot open input file!\n"; 17 | return -1; 18 | } 19 | 20 | std::ofstream out_file(argv[2]); 21 | if(!out_file.is_open()) 22 | { 23 | std::cout << "Cannot open output file!\n"; 24 | return -1; 25 | } 26 | 27 | const char* prefix = argv[3]; 28 | 29 | bool writing_vertices = false; 30 | bool writing_triangles = false; 31 | bool new_array = true; 32 | std::string color; 33 | 34 | std::string token; 35 | while(in_file >> token) 36 | { 37 | if(token == "o") 38 | { 39 | if(writing_triangles || writing_vertices) 40 | { 41 | out_file << "}\n"; 42 | writing_triangles = false; 43 | } 44 | 45 | out_file << prefix << "vertices={\n"; 46 | writing_vertices = true; 47 | new_array = true; 48 | continue; 49 | } 50 | 51 | if(token == "usemtl") 52 | { 53 | if(writing_vertices) 54 | { 55 | out_file << "}\n"; 56 | writing_vertices = false; 57 | } 58 | 59 | if(!writing_triangles) 60 | { 61 | out_file << prefix << "triangles={\n"; 62 | writing_triangles=true; 63 | new_array = true; 64 | } 65 | 66 | in_file >> color; 67 | continue; 68 | } 69 | 70 | if(token == "v") 71 | { 72 | out_file << (new_array ? " " : " ,"); 73 | in_file >> token; out_file << token << ","; // X 74 | in_file >> token; out_file << -std::stof(token) << ","; // Y (inverted) 75 | in_file >> token; out_file << token; // Z 76 | out_file << "\n"; 77 | new_array = false; 78 | continue; 79 | } 80 | 81 | if(token == "f") 82 | { 83 | out_file << (new_array ? " " : " ,"); 84 | in_file >> token; out_file << std::stoi(token)-1 << ","; // shift by 1, obj is 1 based index 85 | in_file >> token; out_file << std::stoi(token)-1 << ","; // shift by 1, obj is 1 based index 86 | in_file >> token; out_file << std::stoi(token)-1; // shift by 1, obj is 1 based index 87 | out_file << color << "\n"; 88 | new_array = false; 89 | continue; 90 | } 91 | } 92 | 93 | if(writing_vertices || writing_triangles) 94 | { 95 | out_file << "}\n"; 96 | } 97 | 98 | std::cout << "DONE\n"; 99 | } 100 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/Pico8ObjToLua/stdafx.h: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/car_mesh.lua: -------------------------------------------------------------------------------- 1 | car_vertices={ 2 | -1.405268,-0.732655,-0.683887 3 | ,-1.405268,-0.549445,-0.841422 4 | ,-1.257430,-0.488208,-0.841422 5 | ,-1.012984,-0.340370,-0.683887 6 | ,-1.196194,-0.340370,-0.841422 7 | ,-1.257430,-0.192532,-0.841422 8 | ,-1.405268,0.051914,-0.683887 9 | ,-1.405268,-0.131296,-0.841422 10 | ,-1.553106,-0.192532,-0.841422 11 | ,-1.797553,-0.340370,-0.683887 12 | ,-1.614342,-0.340370,-0.841422 13 | ,-1.553106,-0.488208,-0.841422 14 | ,-1.127881,-0.617757,-0.841422 15 | ,-1.405268,-0.732655,-0.841422 16 | ,-1.012984,-0.340370,-0.841422 17 | ,-1.127881,-0.062983,-0.841422 18 | ,-1.405268,0.051914,-0.841422 19 | ,-1.682655,-0.062983,-0.841422 20 | ,-1.797553,-0.340370,-0.841422 21 | ,-1.682655,-0.617757,-0.841422 22 | ,1.929369,-0.996140,0.489422 23 | ,2.053456,-0.321220,0.613508 24 | ,-1.941691,-0.887796,0.613508 25 | ,-2.020102,-0.533846,0.517852 26 | ,1.929369,-0.996140,-0.484336 27 | ,2.053456,-0.321220,-0.608422 28 | ,-1.941691,-0.887796,-0.608422 29 | ,-2.025763,-0.557363,-0.499566 30 | ,-0.871305,-0.272162,-0.608422 31 | ,-0.805532,-1.056898,0.481684 32 | ,-0.805533,-1.056898,-0.476598 33 | ,-0.871305,-0.272162,0.613508 34 | ,0.633852,-0.996140,-0.608422 35 | ,0.633852,-0.272162,0.613508 36 | ,0.633852,-0.272162,-0.608422 37 | ,0.633852,-0.996140,0.613508 38 | ,0.633852,-1.447706,0.455402 39 | ,-0.448248,-1.386948,0.366124 40 | ,-0.448248,-1.386948,-0.361038 41 | ,0.633852,-1.447706,-0.450316 42 | ,2.053456,-0.996140,-0.608422 43 | ,2.053456,-0.996140,0.613508 44 | ,0.757938,-0.724121,-0.484336 45 | ,1.929369,-0.724121,-0.484336 46 | ,1.929369,-0.724121,0.489422 47 | ,0.757939,-0.724121,0.489422 48 | ,-2.120883,-0.560536,-0.372364 49 | ,-2.120883,-0.833919,-0.372364 50 | ,-2.120883,-0.833919,0.377450 51 | ,-2.120883,-0.553222,0.377450 52 | ,-0.871305,-0.996140,-0.608422 53 | ,-0.871305,-0.996140,0.613508 54 | ,-0.382476,-1.447706,-0.450316 55 | ,-0.382476,-1.447706,0.455402 56 | ,-1.941691,-0.272162,-0.608422 57 | ,-1.941691,-0.272162,0.613508 58 | ,-2.120883,-0.561140,-0.301710 59 | ,-2.120883,-0.745808,-0.301710 60 | ,-2.120883,-0.745808,0.306796 61 | ,-2.120883,-0.561140,0.306796 62 | ,-2.120883,-0.277310,-0.372364 63 | ,-2.120883,-0.277310,0.377450 64 | ,-1.405268,-0.732655,0.707552 65 | ,-1.405268,-0.549445,0.865087 66 | ,-1.012984,-0.340370,0.707552 67 | ,-1.257430,-0.488208,0.865087 68 | ,-1.196194,-0.340370,0.865087 69 | ,-1.405268,0.051914,0.707552 70 | ,-1.257430,-0.192532,0.865087 71 | ,-1.405268,-0.131296,0.865087 72 | ,-1.797553,-0.340370,0.707552 73 | ,-1.553106,-0.192532,0.865087 74 | ,-1.614342,-0.340370,0.865087 75 | ,-1.553106,-0.488208,0.865087 76 | ,-1.127881,-0.617757,0.865087 77 | ,-1.405268,-0.732655,0.865087 78 | ,-1.012984,-0.340370,0.865087 79 | ,-1.127881,-0.062983,0.865087 80 | ,-1.405268,0.051914,0.865087 81 | ,-1.682655,-0.062983,0.865087 82 | ,-1.797553,-0.340370,0.865087 83 | ,-1.682655,-0.617757,0.865087 84 | ,1.165234,-0.732655,0.707552 85 | ,1.165234,-0.549445,0.865087 86 | ,1.557518,-0.340370,0.707552 87 | ,1.313072,-0.488208,0.865087 88 | ,1.374308,-0.340370,0.865087 89 | ,1.165234,0.051914,0.707552 90 | ,1.313072,-0.192532,0.865087 91 | ,1.165234,-0.131296,0.865087 92 | ,0.772949,-0.340370,0.707552 93 | ,1.017396,-0.192532,0.865087 94 | ,0.956159,-0.340370,0.865087 95 | ,1.017396,-0.488208,0.865087 96 | ,1.442621,-0.617757,0.865087 97 | ,1.165234,-0.732655,0.865087 98 | ,1.557518,-0.340370,0.865087 99 | ,1.442621,-0.062983,0.865087 100 | ,1.165234,0.051914,0.865087 101 | ,0.887847,-0.062983,0.865087 102 | ,0.772949,-0.340370,0.865087 103 | ,0.887847,-0.617757,0.865087 104 | ,1.165234,-0.732655,-0.683887 105 | ,1.165234,-0.549445,-0.841422 106 | ,1.313072,-0.488208,-0.841422 107 | ,1.557518,-0.340370,-0.683887 108 | ,1.374308,-0.340370,-0.841422 109 | ,1.313072,-0.192532,-0.841422 110 | ,1.165234,0.051914,-0.683887 111 | ,1.165234,-0.131296,-0.841422 112 | ,1.017396,-0.192532,-0.841422 113 | ,0.772949,-0.340370,-0.683887 114 | ,0.956159,-0.340370,-0.841422 115 | ,1.017396,-0.488208,-0.841422 116 | ,1.442621,-0.617757,-0.841422 117 | ,1.165234,-0.732655,-0.841422 118 | ,1.557518,-0.340370,-0.841422 119 | ,1.442621,-0.062983,-0.841422 120 | ,1.165234,0.051914,-0.841422 121 | ,0.887847,-0.062983,-0.841422 122 | ,0.772949,-0.340370,-0.841422 123 | ,0.887847,-0.617757,-0.841422 124 | ,0.666579,-1.243801,0.485637 125 | ,0.657690,-1.391222,0.485637 126 | ,0.666579,-1.243801,-0.485637 127 | ,0.657690,-1.391222,-0.485637 128 | ,0.725818,-1.165165,0.345687 129 | ,0.822222,-1.277050,0.345687 130 | ,0.725818,-1.165165,-0.342095 131 | ,0.822222,-1.277051,-0.342095 132 | ,1.313989,-0.880794,-0.485637 133 | ,1.210657,-0.775274,-0.342096 134 | ,1.313989,-0.880794,0.345687 135 | ,1.313989,-0.880794,0.485637 136 | ,1.210657,-0.775274,0.345687 137 | ,1.313989,-0.880794,-0.342096 138 | ,1.343654,-0.272162,0.613508 139 | ,1.343654,-0.272162,-0.608422 140 | ,-1.406498,-0.272162,-0.608422 141 | ,-1.406498,-0.272162,0.613508 142 | ,1.226246,-0.966717,0.485637 143 | ,1.227453,-0.965536,0.345687 144 | ,1.028914,-0.953247,0.485637 145 | ,1.021208,-0.960794,0.345687 146 | ,1.203384,-0.989105,-0.342096 147 | ,1.207328,-0.985243,-0.485637 148 | ,1.004357,-0.977295,-0.485637 149 | ,0.996490,-0.984999,-0.342096 150 | } 151 | car_triangles={ 152 | 50,22,51,11.003 153 | ,39,53,36,11.003 154 | ,24,41,40,11.003 155 | ,20,35,41,11.003 156 | ,26,48,22,11.003 157 | ,30,51,29,11.003 158 | ,37,52,38,11.003 159 | ,29,53,37,11.003 160 | ,30,52,50,11.003 161 | ,36,35,32,11.003 162 | ,36,32,39,11.003 163 | ,32,24,40,11.003 164 | ,50,26,22,11.003 165 | ,39,52,53,11.003 166 | ,24,20,41,11.003 167 | ,26,47,48,11.003 168 | ,30,50,51,11.003 169 | ,37,53,52,11.003 170 | ,29,51,53,11.003 171 | ,30,38,52,11.003 172 | ,0,12,13,0.003 173 | ,3,12,0,0.003 174 | ,3,15,14,0.003 175 | ,6,15,3,0.003 176 | ,6,17,16,0.003 177 | ,9,17,6,0.003 178 | ,9,19,18,0.003 179 | ,0,19,9,0.003 180 | ,1,12,2,0.003 181 | ,12,4,2,0.003 182 | ,4,15,5,0.003 183 | ,15,7,5,0.003 184 | ,7,17,8,0.003 185 | ,17,10,8,0.003 186 | ,10,19,11,0.003 187 | ,19,1,11,0.003 188 | ,29,38,30,0.003 189 | ,35,53,51,0.003 190 | ,32,52,39,0.003 191 | ,43,45,44,0.003 192 | ,58,56,59,0.003 193 | ,62,74,64,0.003 194 | ,64,74,76,0.003 195 | ,64,77,67,0.003 196 | ,67,77,78,0.003 197 | ,67,79,70,0.003 198 | ,70,79,80,0.003 199 | ,70,81,62,0.003 200 | ,62,81,75,0.003 201 | ,65,75,63,0.003 202 | ,66,74,65,0.003 203 | ,66,77,76,0.003 204 | ,69,77,68,0.003 205 | ,69,79,78,0.003 206 | ,72,79,71,0.003 207 | ,72,81,80,0.003 208 | ,63,81,73,0.003 209 | ,82,94,84,0.003 210 | ,84,94,96,0.003 211 | ,84,97,87,0.003 212 | ,87,97,98,0.003 213 | ,87,99,90,0.003 214 | ,90,99,100,0.003 215 | ,90,101,82,0.003 216 | ,82,101,95,0.003 217 | ,85,95,83,0.003 218 | ,86,94,85,0.003 219 | ,86,97,96,0.003 220 | ,89,97,88,0.003 221 | ,89,99,98,0.003 222 | ,92,99,91,0.003 223 | ,93,100,92,0.003 224 | ,83,101,93,0.003 225 | ,102,114,115,0.003 226 | ,105,114,102,0.003 227 | ,105,117,116,0.003 228 | ,108,117,105,0.003 229 | ,108,119,118,0.003 230 | ,111,119,108,0.003 231 | ,111,121,120,0.003 232 | ,102,121,111,0.003 233 | ,103,114,104,0.003 234 | ,114,106,104,0.003 235 | ,106,117,107,0.003 236 | ,117,109,107,0.003 237 | ,109,119,110,0.003 238 | ,110,120,112,0.003 239 | ,120,113,112,0.003 240 | ,121,103,113,0.003 241 | ,3,14,12,0.003 242 | ,6,16,15,0.003 243 | ,9,18,17,0.003 244 | ,0,13,19,0.003 245 | ,1,13,12,0.003 246 | ,12,14,4,0.003 247 | ,4,14,15,0.003 248 | ,15,16,7,0.003 249 | ,7,16,17,0.003 250 | ,17,18,10,0.003 251 | ,10,18,19,0.003 252 | ,19,13,1,0.003 253 | ,29,37,38,0.003 254 | ,35,36,53,0.003 255 | ,32,50,52,0.003 256 | ,43,42,45,0.003 257 | ,58,57,56,0.003 258 | ,62,75,74,0.003 259 | ,64,76,77,0.003 260 | ,67,78,79,0.003 261 | ,70,80,81,0.003 262 | ,65,74,75,0.003 263 | ,66,76,74,0.003 264 | ,66,68,77,0.003 265 | ,69,78,77,0.003 266 | ,69,71,79,0.003 267 | ,72,80,79,0.003 268 | ,72,73,81,0.003 269 | ,63,75,81,0.003 270 | ,82,95,94,0.003 271 | ,84,96,97,0.003 272 | ,87,98,99,0.003 273 | ,90,100,101,0.003 274 | ,85,94,95,0.003 275 | ,86,96,94,0.003 276 | ,86,88,97,0.003 277 | ,89,98,97,0.003 278 | ,89,91,99,0.003 279 | ,92,100,99,0.003 280 | ,93,101,100,0.003 281 | ,83,95,101,0.003 282 | ,105,116,114,0.003 283 | ,108,118,117,0.003 284 | ,111,120,119,0.003 285 | ,102,115,121,0.003 286 | ,103,115,114,0.003 287 | ,114,116,106,0.003 288 | ,106,116,117,0.003 289 | ,117,118,109,0.003 290 | ,109,118,119,0.003 291 | ,110,119,120,0.003 292 | ,120,121,113,0.003 293 | ,121,115,103,0.003 294 | ,23,48,49,7.003 295 | ,27,47,26,7.003 296 | ,129,145,125,7.003 297 | ,129,123,127,7.003 298 | ,127,140,141,7.003 299 | ,141,133,132,7.003 300 | ,145,135,130,7.003 301 | ,23,22,48,7.003 302 | ,27,46,47,7.003 303 | ,129,144,145,7.003 304 | ,129,125,123,7.003 305 | ,127,123,140,7.003 306 | ,141,140,133,7.003 307 | ,145,144,135,7.003 308 | ,137,40,25,3.003 309 | ,139,22,55,3.003 310 | ,40,21,25,3.003 311 | ,33,51,31,3.003 312 | ,138,50,28,3.003 313 | ,35,42,32,3.003 314 | ,136,35,33,3.003 315 | ,50,34,28,3.003 316 | ,24,44,20,3.003 317 | ,24,42,43,3.003 318 | ,27,26,54,3.003 319 | ,22,23,55,3.003 320 | ,23,61,55,3.003 321 | ,27,60,46,3.003 322 | ,57,47,46,3.003 323 | ,59,61,49,3.003 324 | ,58,47,57,3.003 325 | ,56,61,59,3.003 326 | ,20,45,35,3.003 327 | ,21,41,136,3.003 328 | ,32,137,34,3.003 329 | ,54,26,138,3.003 330 | ,31,51,139,3.003 331 | ,22,139,51,3.003 332 | ,138,26,50,3.003 333 | ,40,41,21,3.003 334 | ,33,35,51,3.003 335 | ,35,45,42,3.003 336 | ,136,41,35,3.003 337 | ,50,32,34,3.003 338 | ,24,43,44,3.003 339 | ,24,32,42,3.003 340 | ,23,49,61,3.003 341 | ,27,54,60,3.003 342 | ,60,56,46,3.003 343 | ,56,57,46,3.003 344 | ,48,58,49,3.003 345 | ,58,59,49,3.003 346 | ,58,48,47,3.003 347 | ,56,60,61,3.003 348 | ,20,44,45,3.003 349 | ,32,40,137,3.003 350 | ,4,7,10,6.003 351 | ,69,68,66,6.003 352 | ,89,88,86,6.003 353 | ,106,109,112,6.003 354 | ,129,126,128,6.003 355 | ,127,143,126,6.003 356 | ,125,146,124,6.003 357 | ,129,147,144,6.003 358 | ,123,142,140,6.003 359 | ,141,134,143,6.003 360 | ,144,131,135,6.003 361 | ,1,2,4,6.003 362 | ,4,5,7,6.003 363 | ,7,8,10,6.003 364 | ,10,11,1,6.003 365 | ,1,4,10,6.003 366 | ,66,65,63,6.003 367 | ,63,73,66,6.003 368 | ,73,72,66,6.003 369 | ,72,71,66,6.003 370 | ,71,69,66,6.003 371 | ,86,85,92,6.003 372 | ,85,83,92,6.003 373 | ,83,93,92,6.003 374 | ,92,91,86,6.003 375 | ,91,89,86,6.003 376 | ,103,104,106,6.003 377 | ,106,107,109,6.003 378 | ,109,110,112,6.003 379 | ,112,113,103,6.003 380 | ,103,106,112,6.003 381 | ,129,127,126,6.003 382 | ,127,141,143,6.003 383 | ,125,145,146,6.003 384 | ,129,128,147,6.003 385 | ,123,122,142,6.003 386 | ,141,132,134,6.003 387 | ,144,147,131,6.003 388 | } 389 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/car_mesh.p8: -------------------------------------------------------------------------------- 1 | pico-8 cartridge // http://www.pico-8.com 2 | version 30 3 | __lua__ 4 | #include car_mesh.lua 5 | #include car_mesh_converter.lua 6 | 7 | function _init() 8 | convert() 9 | end 10 | __gfx__ 11 | 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 12 | 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 13 | 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 14 | 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 15 | 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 16 | 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 17 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/car_mesh_converter.lua: -------------------------------------------------------------------------------- 1 | function convert() 2 | local minx,miny,minz,maxx,maxy,maxz=999,999,999,-999,-999,-999 3 | for i=0,#car_vertices\3-1 do 4 | local idx=1+i*3 5 | 6 | minx=min(car_vertices[idx],minx) 7 | miny=min(car_vertices[idx+1],miny) 8 | minz=min(car_vertices[idx+2],minz) 9 | 10 | maxx=max(car_vertices[idx],maxx) 11 | maxy=max(car_vertices[idx+1],maxy) 12 | maxz=max(car_vertices[idx+2],maxz) 13 | end 14 | 15 | local sizex=maxx-minx 16 | local sizey=maxy-miny 17 | local sizez=maxz-minz 18 | 19 | local mn=min(min(minx,miny),minz) 20 | local size=max(max(sizex,sizey),sizez) 21 | 22 | --printh("car_minx,car_miny,car_minz,car_sizex,car_sizey,car_sizez="..minx..","..miny..","..minz..","..sizex..","..sizey..","..sizez,"dump.txt") 23 | printh("car_min,car_vscale="..mn..","..size/194,"dump.txt") 24 | 25 | local out="car_verticesc=[[" 26 | for i=0,#car_vertices\3-1 do 27 | local idx=1+i*3 28 | 29 | --out=out..value_to_char(flr((car_vertices[idx ]-minx)/sizex*194)) 30 | --out=out..value_to_char(flr((car_vertices[idx+1]-miny)/sizey*194)) 31 | --out=out..value_to_char(flr((car_vertices[idx+2]-minz)/sizez*194)) 32 | out=out..value_to_char(flr((car_vertices[idx ]-mn)/size*194)) 33 | out=out..value_to_char(flr((car_vertices[idx+1]-mn)/size*194)) 34 | out=out..value_to_char(flr((car_vertices[idx+2]-mn)/size*194)) 35 | end 36 | out=out.."]]" 37 | printh(out,"dump.txt") 38 | 39 | local out="car_trianglesc=[[" 40 | for i=1,#car_triangles do 41 | out=out..value_to_char(flr(car_triangles[i])) 42 | end 43 | out=out.."]]" 44 | printh(out,"dump.txt") 45 | 46 | print("DONE") 47 | end 48 | 49 | function value_to_char(value) -- 0..1 50 | if value<0 or value>194 then 51 | stop("value out of range! "..value) 52 | end 53 | 54 | if value<33 then 55 | return chr(value+32) 56 | else 57 | return chr(value+94-33) 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/low_poly_car.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/car_mesh/low_poly_car.blend -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/low_poly_car.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.83.0 OBJ File: 'low_poly_car.blend' 2 | # www.blender.org 3 | mtllib low_poly_car.mtl 4 | o Cylinder.001_Cylinder.004 5 | v -1.405268 0.732655 -0.683887 6 | v -1.405268 0.549445 -0.841422 7 | v -1.257430 0.488208 -0.841422 8 | v -1.012984 0.340370 -0.683887 9 | v -1.196194 0.340370 -0.841422 10 | v -1.257430 0.192532 -0.841422 11 | v -1.405268 -0.051914 -0.683887 12 | v -1.405268 0.131296 -0.841422 13 | v -1.553106 0.192532 -0.841422 14 | v -1.797553 0.340370 -0.683887 15 | v -1.614342 0.340370 -0.841422 16 | v -1.553106 0.488208 -0.841422 17 | v -1.127881 0.617757 -0.841422 18 | v -1.405268 0.732655 -0.841422 19 | v -1.012984 0.340370 -0.841422 20 | v -1.127881 0.062983 -0.841422 21 | v -1.405268 -0.051914 -0.841422 22 | v -1.682655 0.062983 -0.841422 23 | v -1.797553 0.340370 -0.841422 24 | v -1.682655 0.617757 -0.841422 25 | v 1.929369 0.996140 0.489422 26 | v 2.053456 0.321220 0.613508 27 | v -1.941691 0.887796 0.613508 28 | v -2.020102 0.533846 0.517852 29 | v 1.929369 0.996140 -0.484336 30 | v 2.053456 0.321220 -0.608422 31 | v -1.941691 0.887796 -0.608422 32 | v -2.025763 0.557363 -0.499566 33 | v -0.871305 0.272162 -0.608422 34 | v -0.805532 1.056898 0.481684 35 | v -0.805533 1.056898 -0.476598 36 | v -0.871305 0.272162 0.613508 37 | v 0.633852 0.996140 -0.608422 38 | v 0.633852 0.272162 0.613508 39 | v 0.633852 0.272162 -0.608422 40 | v 0.633852 0.996140 0.613508 41 | v 0.633852 1.447706 0.455402 42 | v -0.448248 1.386948 0.366124 43 | v -0.448248 1.386948 -0.361038 44 | v 0.633852 1.447706 -0.450316 45 | v 2.053456 0.996140 -0.608422 46 | v 2.053456 0.996140 0.613508 47 | v 0.757938 0.724121 -0.484336 48 | v 1.929369 0.724121 -0.484336 49 | v 1.929369 0.724121 0.489422 50 | v 0.757939 0.724121 0.489422 51 | v -2.120883 0.560536 -0.372364 52 | v -2.120883 0.833919 -0.372364 53 | v -2.120883 0.833919 0.377450 54 | v -2.120883 0.553222 0.377450 55 | v -0.871305 0.996140 -0.608422 56 | v -0.871305 0.996140 0.613508 57 | v -0.382476 1.447706 -0.450316 58 | v -0.382476 1.447706 0.455402 59 | v -1.941691 0.272162 -0.608422 60 | v -1.941691 0.272162 0.613508 61 | v -2.120883 0.561140 -0.301710 62 | v -2.120883 0.745808 -0.301710 63 | v -2.120883 0.745808 0.306796 64 | v -2.120883 0.561140 0.306796 65 | v -2.120883 0.277310 -0.372364 66 | v -2.120883 0.277310 0.377450 67 | v -1.405268 0.732655 0.707552 68 | v -1.405268 0.549445 0.865087 69 | v -1.012984 0.340370 0.707552 70 | v -1.257430 0.488208 0.865087 71 | v -1.196194 0.340370 0.865087 72 | v -1.405268 -0.051914 0.707552 73 | v -1.257430 0.192532 0.865087 74 | v -1.405268 0.131296 0.865087 75 | v -1.797553 0.340370 0.707552 76 | v -1.553106 0.192532 0.865087 77 | v -1.614342 0.340370 0.865087 78 | v -1.553106 0.488208 0.865087 79 | v -1.127881 0.617757 0.865087 80 | v -1.405268 0.732655 0.865087 81 | v -1.012984 0.340370 0.865087 82 | v -1.127881 0.062983 0.865087 83 | v -1.405268 -0.051914 0.865087 84 | v -1.682655 0.062983 0.865087 85 | v -1.797553 0.340370 0.865087 86 | v -1.682655 0.617757 0.865087 87 | v 1.165234 0.732655 0.707552 88 | v 1.165234 0.549445 0.865087 89 | v 1.557518 0.340370 0.707552 90 | v 1.313072 0.488208 0.865087 91 | v 1.374308 0.340370 0.865087 92 | v 1.165234 -0.051914 0.707552 93 | v 1.313072 0.192532 0.865087 94 | v 1.165234 0.131296 0.865087 95 | v 0.772949 0.340370 0.707552 96 | v 1.017396 0.192532 0.865087 97 | v 0.956159 0.340370 0.865087 98 | v 1.017396 0.488208 0.865087 99 | v 1.442621 0.617757 0.865087 100 | v 1.165234 0.732655 0.865087 101 | v 1.557518 0.340370 0.865087 102 | v 1.442621 0.062983 0.865087 103 | v 1.165234 -0.051914 0.865087 104 | v 0.887847 0.062983 0.865087 105 | v 0.772949 0.340370 0.865087 106 | v 0.887847 0.617757 0.865087 107 | v 1.165234 0.732655 -0.683887 108 | v 1.165234 0.549445 -0.841422 109 | v 1.313072 0.488208 -0.841422 110 | v 1.557518 0.340370 -0.683887 111 | v 1.374308 0.340370 -0.841422 112 | v 1.313072 0.192532 -0.841422 113 | v 1.165234 -0.051914 -0.683887 114 | v 1.165234 0.131296 -0.841422 115 | v 1.017396 0.192532 -0.841422 116 | v 0.772949 0.340370 -0.683887 117 | v 0.956159 0.340370 -0.841422 118 | v 1.017396 0.488208 -0.841422 119 | v 1.442621 0.617757 -0.841422 120 | v 1.165234 0.732655 -0.841422 121 | v 1.557518 0.340370 -0.841422 122 | v 1.442621 0.062983 -0.841422 123 | v 1.165234 -0.051914 -0.841422 124 | v 0.887847 0.062983 -0.841422 125 | v 0.772949 0.340370 -0.841422 126 | v 0.887847 0.617757 -0.841422 127 | v 0.666579 1.243801 0.485637 128 | v 0.657690 1.391222 0.485637 129 | v 0.666579 1.243801 -0.485637 130 | v 0.657690 1.391222 -0.485637 131 | v 0.725818 1.165165 0.345687 132 | v 0.822222 1.277050 0.345687 133 | v 0.725818 1.165165 -0.342095 134 | v 0.822222 1.277051 -0.342095 135 | v 1.313989 0.880794 -0.485637 136 | v 1.210657 0.775274 -0.342096 137 | v 1.313989 0.880794 0.345687 138 | v 1.313989 0.880794 0.485637 139 | v 1.210657 0.775274 0.345687 140 | v 1.313989 0.880794 -0.342096 141 | v 1.343654 0.272162 0.613508 142 | v 1.343654 0.272162 -0.608422 143 | v -1.406498 0.272162 -0.608422 144 | v -1.406498 0.272162 0.613508 145 | v 1.226246 0.966717 0.485637 146 | v 1.227453 0.965536 0.345687 147 | v 1.028914 0.953247 0.485637 148 | v 1.021208 0.960794 0.345687 149 | v 1.203384 0.989105 -0.342096 150 | v 1.207328 0.985243 -0.485637 151 | v 1.004357 0.977295 -0.485637 152 | v 0.996490 0.984999 -0.342096 153 | usemtl 11.003 154 | s off 155 | f 51 23 52 156 | f 40 54 37 157 | f 25 42 41 158 | f 21 36 42 159 | f 27 49 23 160 | f 31 52 30 161 | f 38 53 39 162 | f 30 54 38 163 | f 31 53 51 164 | f 37 36 33 165 | f 37 33 40 166 | f 33 25 41 167 | f 51 27 23 168 | f 40 53 54 169 | f 25 21 42 170 | f 27 48 49 171 | f 31 51 52 172 | f 38 54 53 173 | f 30 52 54 174 | f 31 39 53 175 | usemtl 0.003 176 | f 1 13 14 177 | f 4 13 1 178 | f 4 16 15 179 | f 7 16 4 180 | f 7 18 17 181 | f 10 18 7 182 | f 10 20 19 183 | f 1 20 10 184 | f 2 13 3 185 | f 13 5 3 186 | f 5 16 6 187 | f 16 8 6 188 | f 8 18 9 189 | f 18 11 9 190 | f 11 20 12 191 | f 20 2 12 192 | f 30 39 31 193 | f 36 54 52 194 | f 33 53 40 195 | f 44 46 45 196 | f 59 57 60 197 | f 63 75 65 198 | f 65 75 77 199 | f 65 78 68 200 | f 68 78 79 201 | f 68 80 71 202 | f 71 80 81 203 | f 71 82 63 204 | f 63 82 76 205 | f 66 76 64 206 | f 67 75 66 207 | f 67 78 77 208 | f 70 78 69 209 | f 70 80 79 210 | f 73 80 72 211 | f 73 82 81 212 | f 64 82 74 213 | f 83 95 85 214 | f 85 95 97 215 | f 85 98 88 216 | f 88 98 99 217 | f 88 100 91 218 | f 91 100 101 219 | f 91 102 83 220 | f 83 102 96 221 | f 86 96 84 222 | f 87 95 86 223 | f 87 98 97 224 | f 90 98 89 225 | f 90 100 99 226 | f 93 100 92 227 | f 94 101 93 228 | f 84 102 94 229 | f 103 115 116 230 | f 106 115 103 231 | f 106 118 117 232 | f 109 118 106 233 | f 109 120 119 234 | f 112 120 109 235 | f 112 122 121 236 | f 103 122 112 237 | f 104 115 105 238 | f 115 107 105 239 | f 107 118 108 240 | f 118 110 108 241 | f 110 120 111 242 | f 111 121 113 243 | f 121 114 113 244 | f 122 104 114 245 | f 4 15 13 246 | f 7 17 16 247 | f 10 19 18 248 | f 1 14 20 249 | f 2 14 13 250 | f 13 15 5 251 | f 5 15 16 252 | f 16 17 8 253 | f 8 17 18 254 | f 18 19 11 255 | f 11 19 20 256 | f 20 14 2 257 | f 30 38 39 258 | f 36 37 54 259 | f 33 51 53 260 | f 44 43 46 261 | f 59 58 57 262 | f 63 76 75 263 | f 65 77 78 264 | f 68 79 80 265 | f 71 81 82 266 | f 66 75 76 267 | f 67 77 75 268 | f 67 69 78 269 | f 70 79 78 270 | f 70 72 80 271 | f 73 81 80 272 | f 73 74 82 273 | f 64 76 82 274 | f 83 96 95 275 | f 85 97 98 276 | f 88 99 100 277 | f 91 101 102 278 | f 86 95 96 279 | f 87 97 95 280 | f 87 89 98 281 | f 90 99 98 282 | f 90 92 100 283 | f 93 101 100 284 | f 94 102 101 285 | f 84 96 102 286 | f 106 117 115 287 | f 109 119 118 288 | f 112 121 120 289 | f 103 116 122 290 | f 104 116 115 291 | f 115 117 107 292 | f 107 117 118 293 | f 118 119 110 294 | f 110 119 120 295 | f 111 120 121 296 | f 121 122 114 297 | f 122 116 104 298 | usemtl 7.003 299 | f 24 49 50 300 | f 28 48 27 301 | f 130 146 126 302 | f 130 124 128 303 | f 128 141 142 304 | f 142 134 133 305 | f 146 136 131 306 | f 24 23 49 307 | f 28 47 48 308 | f 130 145 146 309 | f 130 126 124 310 | f 128 124 141 311 | f 142 141 134 312 | f 146 145 136 313 | usemtl 3.003 314 | f 138 41 26 315 | f 140 23 56 316 | f 41 22 26 317 | f 34 52 32 318 | f 139 51 29 319 | f 36 43 33 320 | f 137 36 34 321 | f 51 35 29 322 | f 25 45 21 323 | f 25 43 44 324 | f 28 27 55 325 | f 23 24 56 326 | f 24 62 56 327 | f 28 61 47 328 | f 58 48 47 329 | f 60 62 50 330 | f 59 48 58 331 | f 57 62 60 332 | f 21 46 36 333 | f 22 42 137 334 | f 33 138 35 335 | f 55 27 139 336 | f 32 52 140 337 | f 23 140 52 338 | f 139 27 51 339 | f 41 42 22 340 | f 34 36 52 341 | f 36 46 43 342 | f 137 42 36 343 | f 51 33 35 344 | f 25 44 45 345 | f 25 33 43 346 | f 24 50 62 347 | f 28 55 61 348 | f 61 57 47 349 | f 57 58 47 350 | f 49 59 50 351 | f 59 60 50 352 | f 59 49 48 353 | f 57 61 62 354 | f 21 45 46 355 | f 33 41 138 356 | usemtl 6.003 357 | f 5 8 11 358 | f 70 69 67 359 | f 90 89 87 360 | f 107 110 113 361 | f 130 127 129 362 | f 128 144 127 363 | f 126 147 125 364 | f 130 148 145 365 | f 124 143 141 366 | f 142 135 144 367 | f 145 132 136 368 | f 2 3 5 369 | f 5 6 8 370 | f 8 9 11 371 | f 11 12 2 372 | f 2 5 11 373 | f 67 66 64 374 | f 64 74 67 375 | f 74 73 67 376 | f 73 72 67 377 | f 72 70 67 378 | f 87 86 93 379 | f 86 84 93 380 | f 84 94 93 381 | f 93 92 87 382 | f 92 90 87 383 | f 104 105 107 384 | f 107 108 110 385 | f 110 111 113 386 | f 113 114 104 387 | f 104 107 113 388 | f 130 128 127 389 | f 128 142 144 390 | f 126 146 147 391 | f 130 129 148 392 | f 124 123 143 393 | f 142 133 135 394 | f 145 148 132 395 | -------------------------------------------------------------------------------- /picooffroad/work/car_mesh/readme.txt: -------------------------------------------------------------------------------- 1 | Car mesh 2 | 1. open in blender 3 | 2. export to obj (only one mesh, without normals and without UVs, triangulate) 4 | 3. convert to LUA by Pico8ObjToLua 5 | 4. compress with pico8 tool car_mesh.p8 -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/TemplateConsole.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/tracks/Pico8RacingMapPacker/bin/TemplateConsole.exe -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/TemplateConsole_x64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/tracks/Pico8RacingMapPacker/bin/TemplateConsole_x64.exe -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/compressed_map.txt: -------------------------------------------------------------------------------- 1 | racing_map1=[[ロ^:リモム^<えzお;ええお:えおお9えかお.ワヲえrっっツ^ テトc!んんえbお'ツお#う#ツえmお&う ツツえbき&▥ お#う"え*メそ"c#の(や^ え*ツっそ!う"ををソコクゆ^#クケコク^ c#a(え%お#え!ツす%ををツえ_わえ0せ う え_わえ"う"ロツナナえ%う!え^わわやえ(ニニえ$う"え@う え"お#➡️!え#g"え^やえ3b#リモみ"~!メh"c#a(う え#お"え8f5えzろえ%お!ツナナえiやろろえ)ニニツゃゃえ3ク^"ゆ^)p やお も%え ツう ツツえ2れえ4やえ*う!こ t ゅゅえ,お"え0や▒&ロう%え ゅゅやえ+クお"え;ロう$ツう!え-お"え-`!▒'ロう$ツう!え.お!え-▥'え"^%え3⬅️,k0お%ツう えvロツ^ えmお&えのお$ンナ^ ンえnか#ッニ^ ッえ@メ○(お)ツ^ ロえ-るるて$ホフ^$ヘケコふ!a$りりえ:るる웃%オウ^$エえ)りりクも#え3う'え3う え9う'ケコえ'ぬ&う"え#う え1☉&え2う"え+ツえ*う&え2う#え#お!え!ょょえ?も$う$え*ょょツソコも"アアさ'も メモホフ^$ヘむ(サササえ$お う"え$アアu%d7お シシシえ(う!え#う え_`!も%ロう"え"う!えl^#リモムムう!え@サササ✽)え'ふ*え7シシシえ3お"え?^#も'えむお"えしサ^!✽*えhシ^!え6お=らら⬇️"░+え(イイムメた!さ.⬆️#ククお$え4イイククケコ웃%クよg&f'お#も+え%う!え$や`!え e"お/え2う"え$➡️"え _0お!え+ムえ"う#…)え3お!え2う(や`"よe$お/え,ムえ!✽/よに'🅾️-え0█:]] 2 | waypoints_racing_map1=15 3 | starts_racing_map1=split('3763,3954,3760,3951,3959,3768,3962,3771') 4 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/dump.txt: -------------------------------------------------------------------------------- 1 | 0: 246 2 | 1: 1,29 3 | 2: 243 4 | 3: 238 5 | 4: 236 6 | 5: 1,31 7 | 6: 64,64 8 | 7: 65,30 9 | 8: 64,99 10 | 9: 65,29 11 | 10: 64,100 12 | 11: 65,28 13 | 12: 64,101 14 | 13: 65,17 15 | 14: 247 16 | 15: 248 17 | 16: 64,56 18 | 17: 200 19 | 18: 200 20 | 19: 221 21 | 20: 1,3 22 | 21: 222 23 | 22: 223 24 | 23: 6,4 25 | 24: 199 26 | 25: 199 27 | 26: 64,40 28 | 27: 65,10 29 | 28: 221 30 | 29: 65,6 31 | 30: 63,6 32 | 31: 221 33 | 32: 64,51 34 | 33: 65,9 35 | 34: 63,3 36 | 35: 221 37 | 36: 221 38 | 37: 64,40 39 | 38: 67,9 40 | 39: 60,3 41 | 40: 65,6 42 | 41: 63,5 43 | 42: 64,13 44 | 43: 237 45 | 44: 75,5 46 | 45: 6,6 47 | 46: 85,11 48 | 47: 189 49 | 48: 1,3 50 | 49: 64,13 51 | 50: 221 52 | 51: 200 53 | 52: 75,4 54 | 53: 63,5 55 | 54: 198 56 | 55: 198 57 | 56: 218 58 | 57: 213 59 | 58: 211 60 | 59: 190 61 | 60: 1,6 62 | 61: 211 63 | 62: 212 64 | 63: 213 65 | 64: 211 66 | 65: 1,3 67 | 66: 6,6 68 | 67: 4,11 69 | 68: 64,8 70 | 69: 65,6 71 | 70: 64,4 72 | 71: 221 73 | 72: 73,8 74 | 73: 198 75 | 74: 198 76 | 75: 221 77 | 76: 64,37 78 | 77: 197 79 | 78: 64,19 80 | 79: 74,3 81 | 80: 63,3 82 | 81: 64,37 83 | 82: 197 84 | 83: 64,5 85 | 84: 63,5 86 | 85: 246 87 | 86: 221 88 | 87: 224 89 | 88: 224 90 | 89: 64,8 91 | 90: 63,4 92 | 91: 64,36 93 | 92: 197 94 | 93: 197 95 | 94: 189 96 | 95: 64,11 97 | 96: 225 98 | 97: 225 99 | 98: 64,7 100 | 99: 63,5 101 | 100: 64,35 102 | 101: 63,3 103 | 102: 64,5 104 | 103: 65,6 105 | 104: 52,4 106 | 105: 64,6 107 | 106: 10,5 108 | 107: 64,36 109 | 108: 189 110 | 109: 64,22 111 | 110: 5,6 112 | 111: 243 113 | 112: 238 114 | 113: 92,5 115 | 114: 33,4 116 | 115: 237 117 | 116: 11,5 118 | 117: 6,6 119 | 118: 4,11 120 | 119: 63,3 121 | 120: 64,6 122 | 121: 65,5 123 | 122: 64,27 124 | 123: 9,24 125 | 124: 64,64 126 | 125: 196 127 | 126: 64,8 128 | 127: 65,4 129 | 128: 221 130 | 129: 224 131 | 130: 224 132 | 131: 64,47 133 | 132: 189 134 | 133: 196 135 | 134: 196 136 | 135: 64,12 137 | 136: 225 138 | 137: 225 139 | 138: 221 140 | 139: 201 141 | 140: 201 142 | 141: 64,22 143 | 142: 211 144 | 143: 1,5 145 | 144: 190 146 | 145: 1,12 147 | 146: 19,3 148 | 147: 189 149 | 148: 65,3 150 | 149: 95,8 151 | 150: 64,3 152 | 151: 221 153 | 152: 63,3 154 | 153: 221 155 | 154: 221 156 | 155: 64,21 157 | 156: 195 158 | 157: 64,23 159 | 158: 189 160 | 159: 64,13 161 | 160: 63,4 162 | 161: 70,3 163 | 162: 23,3 164 | 163: 202 165 | 164: 202 166 | 165: 64,15 167 | 166: 65,5 168 | 167: 64,19 169 | 168: 189 170 | 169: 36,9 171 | 170: 246 172 | 171: 63,8 173 | 172: 64,3 174 | 173: 202 175 | 174: 202 176 | 175: 189 177 | 176: 64,14 178 | 177: 211 179 | 178: 65,5 180 | 179: 64,30 181 | 180: 246 182 | 181: 63,7 183 | 182: 221 184 | 183: 63,4 185 | 184: 64,16 186 | 185: 65,5 187 | 186: 64,16 188 | 187: 3,4 189 | 188: 36,10 190 | 189: 246 191 | 190: 63,7 192 | 191: 221 193 | 192: 63,4 194 | 193: 64,17 195 | 194: 65,4 196 | 195: 64,16 197 | 196: 60,10 198 | 197: 64,5 199 | 198: 1,8 200 | 199: 64,22 201 | 200: 46,15 202 | 201: 14,19 203 | 202: 65,8 204 | 203: 221 205 | 204: 63,3 206 | 205: 64,60 207 | 206: 246 208 | 207: 221 209 | 208: 1,3 210 | 209: 64,51 211 | 210: 65,9 212 | 211: 64,120 213 | 212: 65,7 214 | 213: 249 215 | 214: 224 216 | 215: 1,3 217 | 216: 249 218 | 217: 64,52 219 | 218: 66,6 220 | 219: 250 221 | 220: 225 222 | 221: 1,3 223 | 222: 250 224 | 223: 64,35 225 | 224: 237 226 | 225: 34,11 227 | 226: 65,12 228 | 227: 221 229 | 228: 1,3 230 | 229: 246 231 | 230: 64,16 232 | 231: 194 233 | 232: 194 234 | 233: 79,7 235 | 234: 233 236 | 235: 231 237 | 236: 1,7 238 | 237: 232 239 | 238: 212 240 | 239: 213 241 | 240: 88,4 242 | 241: 4,7 243 | 242: 193 244 | 243: 193 245 | 244: 64,29 246 | 245: 194 247 | 246: 194 248 | 247: 44,8 249 | 248: 208 250 | 249: 206 251 | 250: 1,7 252 | 251: 207 253 | 252: 64,12 254 | 253: 193 255 | 254: 193 256 | 255: 211 257 | 256: 95,6 258 | 257: 64,22 259 | 258: 63,10 260 | 259: 64,22 261 | 260: 63,3 262 | 261: 64,28 263 | 262: 63,10 264 | 263: 212 265 | 264: 213 266 | 265: 64,10 267 | 266: 83,9 268 | 267: 63,5 269 | 268: 64,6 270 | 269: 63,3 271 | 270: 64,20 272 | 271: 43,9 273 | 272: 64,21 274 | 273: 63,5 275 | 274: 64,14 276 | 275: 221 277 | 276: 64,13 278 | 277: 63,9 279 | 278: 64,21 280 | 279: 63,6 281 | 280: 64,6 282 | 281: 65,4 283 | 282: 64,4 284 | 283: 203 285 | 284: 203 286 | 285: 64,34 287 | 286: 95,7 288 | 287: 63,7 289 | 288: 64,13 290 | 289: 203 291 | 290: 203 292 | 291: 221 293 | 292: 218 294 | 293: 213 295 | 294: 95,5 296 | 295: 204 297 | 296: 204 298 | 297: 71,10 299 | 298: 95,3 300 | 299: 237 301 | 300: 238 302 | 301: 233 303 | 302: 231 304 | 303: 1,7 305 | 304: 232 306 | 305: 93,11 307 | 306: 214 308 | 307: 214 309 | 308: 214 310 | 309: 64,7 311 | 310: 65,3 312 | 311: 63,5 313 | 312: 64,7 314 | 313: 204 315 | 314: 204 316 | 315: 24,8 317 | 316: 7,26 318 | 317: 65,3 319 | 318: 215 320 | 319: 215 321 | 320: 215 322 | 321: 64,11 323 | 322: 63,4 324 | 323: 64,6 325 | 324: 63,3 326 | 325: 64,37 327 | 326: 3,4 328 | 327: 95,8 329 | 328: 246 330 | 329: 63,5 331 | 330: 64,5 332 | 331: 63,4 333 | 332: 64,50 334 | 333: 1,6 335 | 334: 243 336 | 335: 238 337 | 336: 236 338 | 337: 236 339 | 338: 63,4 340 | 339: 64,35 341 | 340: 214 342 | 341: 214 343 | 342: 214 344 | 343: 40,12 345 | 344: 64,10 346 | 345: 88,13 347 | 346: 64,26 348 | 347: 215 349 | 348: 215 350 | 349: 215 351 | 350: 64,22 352 | 351: 65,5 353 | 352: 64,34 354 | 353: 1,6 355 | 354: 95,10 356 | 355: 64,128 357 | 356: 65,5 358 | 357: 64,107 359 | 358: 214 360 | 359: 1,4 361 | 360: 40,13 362 | 361: 64,46 363 | 362: 215 364 | 363: 1,4 365 | 364: 64,25 366 | 365: 65,32 367 | 366: 192 368 | 367: 192 369 | 368: 38,5 370 | 369: 39,14 371 | 370: 64,11 372 | 371: 205 373 | 372: 205 374 | 373: 236 375 | 374: 237 376 | 375: 76,4 377 | 376: 71,17 378 | 377: 55,6 379 | 378: 211 380 | 379: 211 381 | 380: 65,7 382 | 381: 64,23 383 | 382: 205 384 | 383: 205 385 | 384: 211 386 | 385: 211 387 | 386: 212 388 | 387: 213 389 | 388: 44,8 390 | 389: 211 391 | 390: 191 392 | 391: 10,9 393 | 392: 9,10 394 | 393: 65,6 395 | 394: 95,14 396 | 395: 64,8 397 | 396: 63,4 398 | 397: 64,7 399 | 398: 189 400 | 399: 3,4 401 | 400: 64,3 402 | 401: 8,5 403 | 402: 65,18 404 | 403: 64,21 405 | 404: 63,5 406 | 405: 64,7 407 | 406: 52,5 408 | 407: 64,3 409 | 408: 2,19 410 | 409: 65,4 411 | 410: 64,14 412 | 411: 236 413 | 412: 64,5 414 | 413: 63,6 415 | 414: 51,12 416 | 415: 64,22 417 | 416: 65,4 418 | 417: 64,21 419 | 418: 63,11 420 | 419: 189 421 | 420: 3,5 422 | 421: 191 423 | 422: 8,7 424 | 423: 65,18 425 | 424: 64,15 426 | 425: 236 427 | 426: 64,4 428 | 427: 40,18 429 | 428: 191 430 | 429: 82,10 431 | 430: 49,16 432 | 431: 64,19 433 | 432: 35,29 434 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/pico8chars.utf8: -------------------------------------------------------------------------------- 1 | ! 2 | " 3 | # 4 | $ 5 | % 6 | & 7 | ' 8 | ( 9 | ) 10 | * 11 | + 12 | , 13 | - 14 | . 15 | / 16 | 0 17 | 1 18 | 2 19 | 3 20 | 4 21 | 5 22 | 6 23 | 7 24 | 8 25 | 9 26 | : 27 | ; 28 | < 29 | = 30 | > 31 | ? 32 | @ 33 | A 34 | B 35 | C 36 | D 37 | E 38 | F 39 | G 40 | H 41 | I 42 | J 43 | K 44 | L 45 | M 46 | N 47 | O 48 | P 49 | Q 50 | R 51 | S 52 | T 53 | U 54 | V 55 | W 56 | X 57 | Y 58 | Z 59 | [ 60 | \ 61 | ] 62 | ^ 63 | _ 64 | ` 65 | a 66 | b 67 | c 68 | d 69 | e 70 | f 71 | g 72 | h 73 | i 74 | j 75 | k 76 | l 77 | m 78 | n 79 | o 80 | p 81 | q 82 | r 83 | s 84 | t 85 | u 86 | v 87 | w 88 | x 89 | y 90 | z 91 | { 92 | | 93 | } 94 | ~ 95 | ○ 96 | █ 97 | ▒ 98 | 🐱 99 | ⬇️ 100 | ░ 101 | ✽ 102 | ● 103 | ♥ 104 | ☉ 105 | 웃 106 | ⌂ 107 | ⬅️ 108 | 😐 109 | ♪ 110 | 🅾️ 111 | ◆ 112 | … 113 | ➡️ 114 | ★ 115 | ⧗ 116 | ⬆️ 117 | ˇ 118 | ∧ 119 | ❎ 120 | ▤ 121 | ▥ 122 | あ 123 | い 124 | う 125 | え 126 | お 127 | か 128 | き 129 | く 130 | け 131 | こ 132 | さ 133 | し 134 | す 135 | せ 136 | そ 137 | た 138 | ち 139 | つ 140 | て 141 | と 142 | な 143 | に 144 | ぬ 145 | ね 146 | の 147 | は 148 | ひ 149 | ふ 150 | へ 151 | ほ 152 | ま 153 | み 154 | む 155 | め 156 | も 157 | や 158 | ゆ 159 | よ 160 | ら 161 | り 162 | る 163 | れ 164 | ろ 165 | わ 166 | を 167 | ん 168 | っ 169 | ゃ 170 | ゅ 171 | ょ 172 | ア 173 | イ 174 | ウ 175 | エ 176 | オ 177 | カ 178 | キ 179 | ク 180 | ケ 181 | コ 182 | サ 183 | シ 184 | ス 185 | セ 186 | ソ 187 | タ 188 | チ 189 | ツ 190 | テ 191 | ト 192 | ナ 193 | ニ 194 | ヌ 195 | ネ 196 | ノ 197 | ハ 198 | ヒ 199 | フ 200 | ヘ 201 | ホ 202 | マ 203 | ミ 204 | ム 205 | メ 206 | モ 207 | ヤ 208 | ユ 209 | ヨ 210 | ラ 211 | リ 212 | ル 213 | レ 214 | ロ 215 | ワ 216 | ヲ 217 | ン 218 | ッ 219 | ャ 220 | ュ 221 | ョ 222 | ◜ 223 | ◝ 224 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/racing_map01.txt: -------------------------------------------------------------------------------- 1 | PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 2 | PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 3 | .PPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 4 | .PPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 5 | ..PPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.............................. 6 | ..PPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.............................. 7 | ...PPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................. 8 | ...PPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................. 9 | ....PPPPPPPPPPPPPPPPQRPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................ 10 | ....PPPPPPPPPP**ppppqrpppp))PPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................ 11 | .....PPPPPPPPPp**pppppppp))pPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF........................... 12 | .....PPPPPPPPPpp**pppppp))pppPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF........................... 13 | ......FFPPPPPPppp**pppp))ppppPMHFFFFFFFFFGHFFFFGHFFFFFFFFFFFFFFFFFFFFF.......................... 14 | ......FFPPPPPPpppp*PPPP)pppp((mhf~~~~~~~fghffffghfffffffffffffff____FF.......................... 15 | .......FFPPPPPpppppPPPPpppp((pmhf~~~~~~~fghffffghfffffffffffffff____FFF......................... 16 | .......FFPPPPPpppppPPPPPpp((ppmhf~~~~~~~fghffffghfffffffffffffff___'FFF......................... 17 | ........PPPPPPpssppPPPPPp((pppmhf~~~~~~~fghffffghfffffffffffffff__''FFFF........................ 18 | ........PPPPPPpttppPPPPP((ppppmhf~~~~~~~fghffffghfffffffffffffff_''_FFFF........................ 19 | .........PPPPPpppppPPPPPppppppmhf~~~~~~~fghffffghfffffffffffffff''__FFFFF....................... 20 | .........PPPPPpppppPPPPPPPPPPPMHFFFFFFFFFGHFFFFGHFFFFFFFFFFFFFFF'___FFFFF....................... 21 | ..........PPPPpppppPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF____FFFFFF...................... 22 | ..........PPPPpppppPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF___FFFFFF...................... 23 | ...........PPPpssppPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&__FFFFFFF..................... 24 | ...........PPPpttp++PPPPPPPPPPMHFFFFFFFFFFffffff~~~~~~~~~~~~~fff_&&_FFFFFFF..................... 25 | ............PPppp++ppPPPPPPPPPMHFFFFFFFFFF%fffff~~~~~~~~~~~~~fff__&&FFFFFFFF.................... 26 | ............PPpp++ppppp___,,PPMHFFFFFFFFFF%%ffff~~~~~~~~~~~~~fff___&FFFFFFFF.................... 27 | .............Pp++pppppp__,,_PPMHFFFFFFFFFFf%%fff~~~~~~~~~~~~~fff____FFFFFFFFF................... 28 | .............PP+ppppppp_,,__PPMHFFFFFFFFFFff%%ff~~~~~~~~~~~~~fff____FFFFFFFFF................... 29 | ..............Ppppppppp,,___PPMHFFFFFFFFFFfff%%f~~~~~~~~~~~~~fffffffFFFFFFFFFF.................. 30 | ..............PPPPPPPPP,,___PPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.................. 31 | ...............PPPPPPPPp____PPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................. 32 | ...............PPPPPPPPPppppPPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................. 33 | ................PPPPPPPPppppPPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................ 34 | ................PPPPPPPPppppPPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................ 35 | .................PPPPPPSssssSPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............... 36 | .................FFPPPPTttttTPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............... 37 | ..................FFPPPPppppPPMHFFFFFFFFFFfff$$FFFFFFFCAAAAAAAABGHFFFFFFFFFFFFFFFF.............. 38 | ..................FFPPPPppppPPMHFFFFFFFFFFff$$ffffffffcaaaaaaaabghfffffffffff##FFF.............. 39 | ...................FFPPPppppPPMHFFFFFFFFFFf$$fffffffffcaaaaaaaabghffffffffff##fFFFF............. 40 | ...................FFPPPppppPPMHFFFFFFFFFF$$ffffffffghcaaaaaaaabghfffffffff##ffFFFF............. 41 | ....................PPPPppppPPMHFFFFFFFFFF$fffffffffghcaaaaaaaabffffffffff##fffFFFFF............ 42 | ....................PPPPpppppPMHFFFFFFFFFFffffffffffghcaaaaaaaabfffffffff##ffffFFFFF............ 43 | .....................PPPpppp--MHFFFFFFFFFFffffffffffghcaaaaaaaabffffffff##fffffFFFFFF........... 44 | .....................PPPppp--pmhfffff..FFFFFFFFFFFFFGHCAAAAAAAABFFFFFFF##ffffffFFFFFF........... 45 | ......................PPpp--ppmhffff..fFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffiiifFFFFFFF.......... 46 | ......................PPp--pppmhfff..ffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffjjjfFFFFFFF.......... 47 | .......................P--ppppmhff..fffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFF......... 48 | .......................PPPPPPPMHFF.ffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFF......... 49 | ........................PPPPPPMHFFfffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfiiifffFFFFFFFFF........ 50 | ........................PPPPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfjjjfffFFFFFFFFF........ 51 | .........................PPPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFF....... 52 | .........................PPPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFF....... 53 | ..........................PPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFF...... 54 | ..........................PPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFF...... 55 | ...........................PPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfiiiiifFFFFFFFFFFFF..... 56 | ...........................PPPMHFFFfffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfjjjjjfFFFFFFFFFFFF..... 57 | ............................PPMHFFFffff//FGHFFFFFFFFFFFFFFFFFFFFFFFFFFF""ffffffFFFFFFFFFFFFF.... 58 | ............................PPMHFFFfff//ffghfffffffff!ffffffffffffffffff""fffffFFFFFFFFFFFFF.... 59 | .............................PMHFFFff//fffghffff2ff0f!ff5ff7fffffffffffff""ffffFFFFFFFFFFFFFF... 60 | .............................PMHFFFf//ffffghfffffffff!ffffffffffffffffffff""fffFFFFFFFFFFFFFF... 61 | ..............................MHFFF//ffffffffffffffff!fffffffffffffffffffff""ffFFFFFFFFFFFFFFF.. 62 | ..............................MHFFF/fffffffffff3ff1ff!f4ff6fffffffffffffffff""fFFFFFFFFFFFFFFF.. 63 | ...............................HFFFffffffffffffffffff!fffffffffffffffffffffff""FFFFFFFFFFFFFFFF. 64 | ...............................HFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF. 65 | ################################################################################################ -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/racing_map_empty_32x64.txt: -------------------------------------------------------------------------------- 1 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................ 2 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................ 3 | .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................... 4 | .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................... 5 | ..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................. 6 | ..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................. 7 | ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................. 8 | ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................. 9 | ....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................ 10 | ....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................ 11 | .....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................... 12 | .....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................... 13 | ......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................... 14 | ......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................... 15 | .......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................... 16 | .......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................... 17 | ........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................ 18 | ........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................ 19 | .........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................... 20 | .........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................... 21 | ..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................... 22 | ..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................... 23 | ...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................... 24 | ...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................... 25 | ............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................... 26 | ............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................... 27 | .............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................... 28 | .............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................... 29 | ..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................. 30 | ..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................. 31 | ...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................. 32 | ...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................. 33 | ................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................ 34 | ................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................ 35 | .................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............... 36 | .................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............... 37 | ..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............. 38 | ..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............. 39 | ...................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............. 40 | ...................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............. 41 | ....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............ 42 | ....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............ 43 | .....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........... 44 | .....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........... 45 | ......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......... 46 | ......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......... 47 | .......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......... 48 | .......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......... 49 | ........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........ 50 | ........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........ 51 | .........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....... 52 | .........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....... 53 | ..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...... 54 | ..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...... 55 | ...........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..... 56 | ...........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..... 57 | ............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.... 58 | ............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.... 59 | .............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 60 | .............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 61 | ..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.. 62 | ..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.. 63 | ...............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. 64 | ...............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. 65 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/bin/racing_map_empty_64x64.txt: -------------------------------------------------------------------------------- 1 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................ 2 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................ 3 | .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................... 4 | .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................... 5 | ..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................. 6 | ..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................. 7 | ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................. 8 | ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................. 9 | ....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................ 10 | ....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................ 11 | .....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................... 12 | .....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................... 13 | ......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................... 14 | ......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................... 15 | .......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................... 16 | .......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................... 17 | ........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................ 18 | ........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................ 19 | .........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................... 20 | .........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................... 21 | ..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................... 22 | ..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................... 23 | ...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................... 24 | ...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................... 25 | ............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................... 26 | ............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................... 27 | .............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................... 28 | .............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................... 29 | ..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................. 30 | ..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................. 31 | ...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................. 32 | ...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................. 33 | ................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................ 34 | ................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................ 35 | .................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............... 36 | .................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............... 37 | ..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............. 38 | ..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............. 39 | ...................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............. 40 | ...................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............. 41 | ....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............ 42 | ....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............ 43 | .....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........... 44 | .....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........... 45 | ......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......... 46 | ......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......... 47 | .......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......... 48 | .......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......... 49 | ........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........ 50 | ........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........ 51 | .........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....... 52 | .........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....... 53 | ..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...... 54 | ..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...... 55 | ...........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..... 56 | ...........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..... 57 | ............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.... 58 | ............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.... 59 | .............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 60 | .............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... 61 | ..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.. 62 | ..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.. 63 | ...............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. 64 | ...............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. 65 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/clean.bat: -------------------------------------------------------------------------------- 1 | rem bin 2 | del bin\*.pdb 3 | del bin\*.iobj 4 | del bin\*.ipdb 5 | del bin\*.ilk 6 | del bin\Pico8RacingMapPacker_d.exe 7 | del bin\Pico8RacingMapPacker_x64_d.exe 8 | 9 | rem vs2013 10 | rmdir /S /Q project\vs2013\debug 11 | rmdir /S /Q project\vs2013\release 12 | rmdir /S /Q project\vs2013\ipch 13 | rmdir /S /Q project\vs2013\x64 14 | del project\vs2013\*.ncb 15 | del project\vs2013\*.aps 16 | del project\vs2013\*.sdf 17 | attrib -H project\vs2013\Pico8RacingMapPacker.v12.suo 18 | del project\vs2013\Pico8RacingMapPacker.v12.suo 19 | 20 | rem vs2015 21 | rmdir /S /Q project\vs2015\debug 22 | rmdir /S /Q project\vs2015\release 23 | rmdir /S /Q project\vs2015\ipch 24 | rmdir /S /Q project\vs2015\x64 25 | rmdir /S /Q project\vs2015\.vs 26 | del project\vs2015\*.ncb 27 | del project\vs2015\*.aps 28 | del project\vs2015\*.sdf 29 | del project\vs2015\*.db 30 | attrib -H project\vs2015\Pico8RacingMapPacker.v12.suo 31 | del project\vs2015\Pico8RacingMapPacker.v12.suo 32 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2013/Pico8RacingMapPacker.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2013 for Windows Desktop 4 | VisualStudioVersion = 12.0.30110.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pico8RacingMapPacker", "Pico8RacingMapPacker.vcxproj", "{CE65BF3B-0790-430F-BEE8-071E1CC11CF6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.Build.0 = Debug|Win32 16 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.ActiveCfg = Release|Win32 17 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2013/Pico8RacingMapPacker.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6} 15 | Win32Proj 16 | Pico8RacingMapPacker 17 | 18 | 19 | 20 | Application 21 | true 22 | v120 23 | MultiByte 24 | 25 | 26 | Application 27 | false 28 | v120 29 | true 30 | MultiByte 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | true 44 | $(SolutionDir)..\..\bin\ 45 | $(ProjectName)_d 46 | 47 | 48 | false 49 | $(SolutionDir)..\..\bin\ 50 | 51 | 52 | 53 | 54 | 55 | Level3 56 | Disabled 57 | WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 58 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 59 | 60 | 61 | Console 62 | true 63 | $(OutDir)$(TargetName)$(TargetExt) 64 | 65 | 66 | 67 | 68 | Level3 69 | 70 | 71 | MaxSpeed 72 | true 73 | true 74 | WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 75 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 76 | 77 | 78 | Console 79 | true 80 | true 81 | true 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2013/Pico8RacingMapPacker.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {51dad393-d5f6-4884-8ba1-b773380e1aa2} 6 | 7 | 8 | {61552505-2166-4f7b-b231-d308d5163877} 9 | 10 | 11 | 12 | 13 | src 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2015/Pico8RacingMapPacker.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25123.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pico8RacingMapPacker", "Pico8RacingMapPacker.vcxproj", "{CE65BF3B-0790-430F-BEE8-071E1CC11CF6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Debug|x64 = Debug|x64 12 | Release|Win32 = Release|Win32 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.ActiveCfg = Debug|Win32 17 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|Win32.Build.0 = Debug|Win32 18 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|x64.ActiveCfg = Debug|x64 19 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Debug|x64.Build.0 = Debug|x64 20 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.ActiveCfg = Release|Win32 21 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|Win32.Build.0 = Release|Win32 22 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|x64.ActiveCfg = Release|x64 23 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6}.Release|x64.Build.0 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2015/Pico8RacingMapPacker.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | Release 14 | Win32 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {CE65BF3B-0790-430F-BEE8-071E1CC11CF6} 23 | Win32Proj 24 | Pico8RacingMapPacker 25 | 10.0.17763.0 26 | 27 | 28 | 29 | Application 30 | true 31 | v141 32 | MultiByte 33 | 34 | 35 | Application 36 | true 37 | v141 38 | MultiByte 39 | 40 | 41 | Application 42 | false 43 | v141 44 | true 45 | MultiByte 46 | 47 | 48 | Application 49 | false 50 | v141 51 | true 52 | MultiByte 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | true 72 | $(SolutionDir)..\..\bin\ 73 | $(ProjectName)_d 74 | 75 | 76 | $(ProjectName)_x64_d 77 | true 78 | $(SolutionDir)..\..\bin\ 79 | 80 | 81 | false 82 | $(SolutionDir)..\..\bin\ 83 | 84 | 85 | false 86 | $(ProjectName)_x64 87 | $(SolutionDir)..\..\bin\ 88 | 89 | 90 | 91 | 92 | 93 | Level3 94 | Disabled 95 | WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 96 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 97 | 98 | 99 | Console 100 | true 101 | $(OutDir)$(TargetName)$(TargetExt) 102 | 103 | 104 | 105 | 106 | 107 | 108 | Level3 109 | Disabled 110 | WIN64;WIN32;_WINDOWS;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 111 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 112 | 113 | 114 | Console 115 | true 116 | $(OutDir)$(TargetName)$(TargetExt) 117 | 118 | 119 | 120 | 121 | Level3 122 | 123 | 124 | MaxSpeed 125 | true 126 | true 127 | WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 128 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 129 | 130 | 131 | Console 132 | true 133 | true 134 | true 135 | 136 | 137 | 138 | 139 | Level3 140 | 141 | 142 | MaxSpeed 143 | true 144 | true 145 | WIN64;WIN32;_WINDOWS;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) 146 | $(SolutionDir)..\..;$(SolutionDir)..\..\src;$(SolutionDir)..\..\src_utils 147 | 148 | 149 | Console 150 | true 151 | true 152 | true 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2015/Pico8RacingMapPacker.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {51dad393-d5f6-4884-8ba1-b773380e1aa2} 6 | 7 | 8 | {61552505-2166-4f7b-b231-d308d5163877} 9 | 10 | 11 | 12 | 13 | src 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/project/vs2015/Pico8RacingMapPacker.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(ProjectDir)../../bin 5 | WindowsLocalDebugger 6 | racing_map01.txt compressed_map.txt racing_map1= 7 | 8 | 9 | $(ProjectDir)../../bin 10 | WindowsLocalDebugger 11 | racing_map01.txt compressed_map.txt racing_map1= 12 | 13 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | char* pico8chars[256]; 5 | 6 | template inline T Max(T a,T b) { return a>b ? a : b; } 7 | template inline T Min(T a,T b) { return a 1) 48 | { 49 | written += fprintf(f,"%i",count); 50 | } 51 | 52 | if(c>='A' && c<='Z') 53 | { 54 | // barrier 55 | written += fprintf(f,"%c|",c-'A'+'a'); 56 | } 57 | else if(c>='!' && c<='/') 58 | { 59 | // waypoint (stored as slippery surface - because that has height copied from previous tile, value is stored as flag) 60 | written += fprintf(f,"_%c",c); 61 | c-='!'; 62 | max_waypoint_index = (c>max_waypoint_index) ? c : max_waypoint_index; 63 | } 64 | else 65 | { 66 | // standard tile 67 | written += fprintf(f,"%c",c); 68 | } 69 | 70 | return written; 71 | } 72 | 73 | void ProcessStartPosition(char& c, int index, std::vector& start_position_index) 74 | { 75 | if(c>='0' && c<='7') 76 | { 77 | start_position_index[c-'0'] = index; 78 | c='_'; 79 | } 80 | } 81 | 82 | int main(int argc,char *argv[]) 83 | { 84 | if(argc!=4) 85 | { 86 | printf("Usage: Pico8RacingMapPacker src dst prefix\n"); 87 | return 0; 88 | } 89 | 90 | LoadPico8Chars(); 91 | 92 | const int map_width = 64; 93 | const int map_height = 64; 94 | 95 | /* 96 | // create empty map 97 | { 98 | FILE* f = fopen(argv[2],"wt"); 99 | char line[map_width*2+1]; 100 | for(int row=0;row tile_stream; 126 | 127 | FILE* f_in = fopen(argv[1], "rt"); 128 | FILE* f_out= fopen(argv[2], "wt"); 129 | FILE* f_dump=fopen("dump.txt","wt"); 130 | 131 | fprintf(f_out,"%s[[",argv[3]); // prefix 132 | char line[1024]; 133 | for(int row=0;row start_positions(8,0); 159 | 160 | for(int index=0;index start_positions(8,0); 182 | for(size_t index=0; index='0' && c<='7') 186 | { 187 | start_positions[c-'0'] = index; 188 | tile_stream[index]='_'; 189 | } 190 | } 191 | 192 | // transform and analyse characters before compression 193 | int max_waypoint_index = -1; 194 | for(size_t index=0; index=33 && c<=47) 206 | { 207 | tile_stream[index] = 191 + (c-33); 208 | max_waypoint_index = Max(max_waypoint_index, c-33); 209 | } 210 | else if(c>='a' && c<='y') 211 | { 212 | tile_stream[index] = 206 + (c-'a'); 213 | } 214 | else // A..Y 215 | { 216 | tile_stream[index] = 231 + (c-'A'); 217 | } 218 | } 219 | 220 | // LZ77 221 | int dump_row=0; 222 | 223 | int count = 0; 224 | int written = 0; 225 | 226 | int index=0; 227 | while(index length) 239 | { 240 | offset = index - search; 241 | length = l; 242 | } 243 | } 244 | } 245 | 246 | if(length > 2) 247 | { 248 | fprintf(f_dump,"%i: %i,%i\n",dump_row++,offset,length); 249 | length = Min(length - 3, 194); 250 | fprintf(f_out,"%s%s",pico8chars[94+offset-1],pico8chars[length <= 32 ? length + 32 : length - 33 + 94]); 251 | index += length + 3; 252 | } 253 | else 254 | { 255 | fprintf(f_dump,"%i: %i\n",dump_row++,(int)(unsigned char)tile_stream[index]); 256 | fprintf(f_out,"%s",pico8chars[(unsigned char)tile_stream[index]]); 257 | ++index; 258 | } 259 | } 260 | 261 | fprintf(f_out,"]]\n"); 262 | fprintf(f_out,"waypoints_%s%i\n",argv[3],max_waypoint_index+1); 263 | fprintf(f_out,"starts_%ssplit('",argv[3]); 264 | for(int i=0; i %i\n",map_width*map_height, written); 274 | DeallocPico8Chars(); 275 | return 0; 276 | } 277 | 278 | 279 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /picooffroad/work/tracks/Pico8RacingMapPacker/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/assemblerbot/pico8/cd8e99254026e9bdae62b112c7cfc23f62c82e76/picooffroad/work/tracks/Pico8RacingMapPacker/stdafx.h -------------------------------------------------------------------------------- /picooffroad/work/tracks/racing_map01.txt: -------------------------------------------------------------------------------- 1 | PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 2 | PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 3 | .PPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 4 | .PPPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 5 | ..PPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.............................. 6 | ..PPPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.............................. 7 | ...PPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................. 8 | ...PPPPPPPPPPPPPPPPPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................. 9 | ....PPPPPPPPPPPPPPPPQRPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................ 10 | ....PPPPPPPPPP**ppppqrpppp))PPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................ 11 | .....PPPPPPPPPp**pppppppp))pPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF........................... 12 | .....PPPPPPPPPpp**pppppp))pppPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF........................... 13 | ......FFFPPPPPppp**pppp))ppppPMHFFFFFFFFFGHFFFFGHFFFFFFFFFFFFFFFFFFFFF.......................... 14 | ......FFFPPPPPpppp**PPP)pppp((mhf~~~~~~~fghffffghfffffffffffffff____FF.......................... 15 | .......FFFPPPPpppppPPPPpppp((pmhf~~~~~~~fghffffghfffffffffffffff____FFF......................... 16 | .......FFFPPPPpppppPPPPPpp((ppmhf~~~~~~~fghffffghfffffffffffffff___'FFF......................... 17 | ........FFPPPPpssppPPPPPp((pppmhf~~~~~~~fghffffghfffffffffffffff__''FFFF........................ 18 | ........FFPPPPpttppPPPPP((ppppmhf~~~~~~~fghffffghfffffffffffffff_''_FFFF........................ 19 | .........FPPPPpppppPPPPPppppppmhf~~~~~~~fghffffghfffffffffffffff''__FFFFF....................... 20 | .........PPPPPpppppPPPPPPPPPPPMHFFFFFFFFFGHFFFFGHFFFFFFFFFFFFFFF'___FFFFF....................... 21 | ..........PPPPpppppPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF____FFFFFF...................... 22 | ..........PPPPpppppPPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF___FFFFFF...................... 23 | ...........PPPpssp+PPPPPPPPPPPMHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&__FFFFFFF..................... 24 | ...........PPPpttp++PPPPPPPPPPMHFFFFFFFFFFffffff~~~~~~~~~~~~~fff_&&_FFFFFFF..................... 25 | ............PPppp++ppPPPPPPPPPMHFFFFFFFFFF%fffff~~~~~~~~~~~~~fff__&&FFFFFFFF.................... 26 | ............PPpp++ppppp___,,PPMHFFFFFFFFFF%%ffff~~~~~~~~~~~~~fff___&FFFFFFFF.................... 27 | .............Pp++pppppp__,,_PPMHFFFFFFFFFFf%%fff~~~~~~~~~~~~~fff____FFFFFFFFF................... 28 | .............PP+ppppppp_,,__PPMHFFFFFFFFFFff%%ff~~~~~~~~~~~~~fff____FFFFFFFFF................... 29 | ..............Ppppppppp,,___PPMHFFFFFFFFFFfff%%f~~~~~~~~~~~~~fffffffFFFFFFFFFF.................. 30 | ..............PPPPPPPPP,,___PPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.................. 31 | ...............PPPPPPPPp____PPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................. 32 | ...............PPPPPPPPPppppPPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................. 33 | ................PPPPPPPPppppPPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................ 34 | ................PPPPPPPPppppPPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................ 35 | .................PPPPPPSssssSPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............... 36 | .................FFPPPPTttttTPMHFFFFFFFFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............... 37 | ..................FFPPPPppppPPMHFFFFFFFFFFfff$$FFFFFFFCAAAAAAAABGHFFFFFFFFFFFFFFFF.............. 38 | ..................FFPPPPppppPPMHFFFFFFFFFFff$$ffffffffcaaaaaaaabghfffffffffff##FFF.............. 39 | ...................FFPPPppppPPMHFFFFFFFFFFf$$fffffffffcaaaaaaaabghffffffffff##fFFFF............. 40 | ...................FFPPPppppPPMHFFFFFFFFFF$$ffffffffghcaaaaaaaabghfffffffff##ffFFFF............. 41 | ....................PPPPppppPPMHFFFFFFFFFF$fffffffffghcaaaaaaaabffffffffff##fffFFFFF............ 42 | ....................PPPPpppppPMHFFFFFFFFFFffffffffffghcaaaaaaaabfffffffff##ffffFFFFF............ 43 | .....................PPPpppp--MHFFFFFFFFFFffffffffffghcaaaaaaaabffffffff##fffffFFFFFF........... 44 | .....................PPPppp--pmhfffff..FFFFFFFFFFFFFGHCAAAAAAAABFFFFFFF##ffffffFFFFFF........... 45 | ......................PPpp--ppmhffff..fFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF#fffiiifFFFFFFF.......... 46 | ......................PPp--pppmhfff..ffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffjjjfFFFFFFF.......... 47 | .......................P--ppppmhff..fffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFF......... 48 | .......................PPPPPPPMHFF.ffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFF......... 49 | ........................PPPPPPMHFFfffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfiiifffFFFFFFFFF........ 50 | ........................PPPPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfjjjfffFFFFFFFFF........ 51 | .........................PPPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFF....... 52 | .........................PPPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFF....... 53 | ..........................PPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFF...... 54 | ..........................PPPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFF...... 55 | ...........................PPPMHFFFffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfiiiiifFFFFFFFFFFFF..... 56 | ...........................PPPMHFFFfffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfjjjjjfFFFFFFFFFFFF..... 57 | ............................PPMHFFFffff//FGHFFFFFFFFFFFFFFFFFFFFFFFFFFF""ffffffFFFFFFFFFFFFF.... 58 | ............................PPMHFFFfff//ffghfffffffff!ffffffffffffffffff""fffffFFFFFFFFFFFFF.... 59 | .............................PMHFFFff//fffghffff2ff0f!ff5ff7fffffffffffff""ffffFFFFFFFFFFFFFF... 60 | .............................PMHFFFf//ffffghfffffffff!ffffffffffffffffffff""fffFFFFFFFFFFFFFF... 61 | ..............................MHFFF//ffffffffffffffff!fffffffffffffffffffff""ffFFFFFFFFFFFFFFF.. 62 | ..............................MHFFF/fffffffffff3ff1ff!f4ff6fffffffffffffffff""fFFFFFFFFFFFFFFF.. 63 | ...............................HFFFffffffffffffffffff!fffffffffffffffffffffff""FFFFFFFFFFFFFFFF. 64 | ...............................HFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF. 65 | ################################################################################################ -------------------------------------------------------------------------------- /picooffroad/work/tracks/racing_map02.txt: -------------------------------------------------------------------------------- 1 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 2 | FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 3 | .FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 4 | .FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 5 | ..FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCAAAAAABFFFFGHFFFFFFFFFFFFFFFFFFFFF.............................. 6 | ..FFFFFFFFFFFFFF)ffffffffffffffcaaaaaabffffghfffffffffffffff**FFFF.............................. 7 | ...FFFFFFFFFFFFF))fffffffffffffcaaaaaabffffghffffffffff____**fFFFFF............................. 8 | ...FFFFFFFFFFFFFf))ffffffffffghcaaaaaabffffghfffffffff____**_fFFFFF............................. 9 | ....FFFFFFFFFFFFff))fffffffffghcaaaaaabffffghfffffffff___**__fFFFFFF............................ 10 | ....FFFFFFFFFFFFfff))ffffffffghcaaaaaabffffghfffffffff__**___fFFFFFF............................ 11 | .....FFFFFFFFFFFffff))fffffffghcaaaaaabffffghffffffffff**___ffFFFFFFF........................... 12 | .....FFFFFFFFFFFfffffFFFFFFFFGHCAAAAAABFFFFGHFFFFFFFFFF*ffffffFFFFFFF........................... 13 | ......FFFFFFFFFIiiiffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffiiiIFFFFFFF.......................... 14 | ......FFFFFFFFFJjjjf((FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffjjjJFFFFFFF.......................... 15 | .......FFFFFFFFFfff((ffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFF......................... 16 | .......FFFFFFFFFff((ffff''ffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFF......................... 17 | ........FFFFFFFFf((ffff''fffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFF........................ 18 | ........FFFFFFFF((ffff''ffffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFF........................ 19 | .........FFFFFFF(ffff''fffffffffFFFFFFFFFFFFFFFFFFFFFFFIiiifffFFFFFFFFFFF....................... 20 | .........FFFFFFFFFFF''ffffffffffFFFFFFFFFFFFFFFFFFFFFFFJjjjfffFFFFFFFFFFF....................... 21 | ..........FFFFFFFFFF'iiiifffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFF...................... 22 | ..........FFFFFFFFFFFjjjjfffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFF...................... 23 | ...........FFFFFFFFFFfffffffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFFF..................... 24 | ...........FFFFFFFFFFfffffffffffFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFFF..................... 25 | ............FFFFFFFFFfffffffffffFFFFFFFFFFFFFFFFFFFFFFFFfffiiiIFFFFFFFFFFFFF.................... 26 | ............FFFFFFFFFfffffffffffFFFFFFFFFFFFFFFFFFFFFFFFfffjjjJFFFFFFFFFFFFF.................... 27 | .............KKKKKKIIiiiiiiiiiiiIIKKKKFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFFFFF................... 28 | .............KKKKKKKKkkkkkkkkkkkKKKKKKFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFFFFF................... 29 | ..............KKKKKKKkkkkkkkkkkkKKKKKKFFFFFFFFFFFFFFFFFFffffffFFFFFFFFFFFFFFFF.................. 30 | ..............KKKKKKKkkkkkkkkkkkKKKKKKFFFFFFFFFFFFFFFFFF++++++FFFFFFFFFFFFFFFF.................. 31 | ...............KKKKKKkkkk~~~~___KKKKKKFFFFFFFFFFFFFFFFFF++++++FFFFFFKKKKKKKKKKK................. 32 | ...............KKKKKKkk~~~~~_____KKKKHFFFFFFFFFFFFFFFFFFfffffffFFFFFGKKKKKKKKKK................. 33 | ................KKKKK~~~~~~~____&&KKKHFFFGHFFFFFFFFFFFFFeeeeeeeFFFFFGKKKLMKKKKKK................ 34 | ................KKKKK~~~~~~~___&&___khfffghfffffffff%%fcaaaaaaabf$$fgkkklmkkk##K................ 35 | .................KKKK~~~~~~~__&&____khfffghfffffffff%%fcaaaaaaabf$$fgkkklm__##kKK............... 36 | .................KKKK~~~~~~__&&_____khfffghfffghffff%%fcaaaaaaabf$$fgkkklm_##__KK............... 37 | ..................KKK~~~~~__&&______khffffffffghffff%%fcaaaaaaabf$$fgkkkkk##___KKK.............. 38 | ..................KKKk~~~~_&&_______khffffffffghffff%%fcaaaaaaabf$$fgkkkk##____KKK.............. 39 | ...................KKk~~~~&&kkkkkkkkkhffffffffghffff%%fcaaaaaaabf$$fgkkk##k____KKKK............. 40 | ...................KKKKKKKKKKKKKKKKKKHFFFFFFFFGHFFFFFFFDddddddDBFFFFGKK##kkkkkkKKKK............. 41 | ....................KKKKKKKKKKKKKKKKKHFFFFFFFFFFFFFFFFFFffffffFFFFFFGKKkkkkkkkkKKKKK............ 42 | ....................KKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFFFFFF,,,,,,FFFFFFKKKKkkkkkkkKKKKK............ 43 | .....................FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,,,,,,FFFFFFKKKKkkkkkkkKKKKKK........... 44 | .....................FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffffFFFFFFKKJJjjjjjjjJJKKKK........... 45 | ......................FFFFFFFFFFFFFFFFFFFFFFGHFFGHFFFFF-fffiiiIFFFFFFFFFfffffffFFFFFFF.......... 46 | ......................FFFFFFFFFFFFF______fffghffghfffff--ffjjjJFFFFFFFFF~~~~~~~FFFFFFF.......... 47 | .......................FFFFFFFFFFFF._______fghffghffffff--ffffFFFFFFFFFF~~~~~~~FFFFFFFF......... 48 | .......................FFFFFFFFFFFF.._____ffghffghfffffff--fffFFFFFFFFFF~~~~~~~FFFFFFFF......... 49 | ........................FFFFFFFFFFF_.._____fghffghffffffff--ffFFFFFFFFFF~~~~~~~FFFFFFFFF........ 50 | ........................FFFFFFFFFFF__..___ffghffghfffffffff--fFFFFFFFFFFfffffffFFFFFFFFF........ 51 | .........................FFFFFFFFFF___..___fghffghffffffffff--FFFFFFFFFIiifffiiIFFFFFFFFF....... 52 | .........................FFFFFFFFFF____FFFFFGHFFGHFFFFFFFFFFFFFFFFFFFFFJjjfffjjJFFFFFFFFF....... 53 | ..........................FFFFFFFFF____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFF...... 54 | ..........................FFFFFFFFF____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFF...... 55 | ...........................FFFFFFFF____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFFF..... 56 | ...........................FFFFFFFFfffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffFFFFFFFFFFFF..... 57 | ............................FFFFFFFffff//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"_______FFFFFFFFFFFFF.... 58 | ............................FFFFFFFfff//ffffffffffffff!ffffffffffffff__""______FFFFFFFFFFFFF.... 59 | .............................FFFFFFff//ffffffffff2ff0f!ff5ff7ffffffff___""_____FFFFFFFFFFFFFF... 60 | .............................FFFFFFf//ffffffffffffffff!ffffffffffffff____""____FFFFFFFFFFFFFF... 61 | ..............................FFFFF//fffffffffffffffff!ffffffffffffff_____""___FFFFFFFFFFFFFFF.. 62 | ..............................FFFFF/ffffffffffff3ff1ff!f4ff6fffffffff______""__FFFFFFFFFFFFFFF.. 63 | ...............................FFFFfffffffffffffffffff!fffffffffffffffffffff""fFFFFFFFFFFFFFFFF. 64 | ...............................FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF. 65 | ################################################################################################ -------------------------------------------------------------------------------- /picooffroad/work/tracks/racing_map03.txt: -------------------------------------------------------------------------------- 1 | KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 2 | KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFFFFFFFFFFFFFFF................................ 3 | .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 4 | .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................... 5 | ..KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKHFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.............................. 6 | ..KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKHFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.............................. 7 | ...KKKKKKKKKKKKKKKKKKKKHFFFFGKKKKKKKHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF............................. 8 | ...KKKKKKKKK~))kkkkkkkkh~~~~gkkkkkkkhffffffff_**____FFFFFFFFFFFFFFF............................. 9 | ....KKKKKKKKk~))k~~~kkkh~~~~gkkkkkkkhfffffff_**_____FFFFFFFFFFFFFFFF............................ 10 | ....KKKKKKKKkk~))~~kkkkh~~~~gkkkkkkkhfffffff**______FFFFFFFFFFFFFFFF............................ 11 | .....KKKKKKKkkk~))~~kkkh~~~~gkkkkkkkhffffff**______fFFFFFFFFFFFFFFFFF........................... 12 | .....KKKKKKKk~~k~)KKKKKHFFFFGKKKKKKKHFFFFFF*_______fFFFFFFFFFFFFFFFFF........................... 13 | ......KKKKKKkk~~~~KKKKKKKKKKKKKKKKKKHFFFFFFf_______fFFFFFFFFFFFFFFFFFF.......................... 14 | ......KKKKKKk~~~~kKKKKKKKKKKKKKKKKKKHFFFFFFF_____fffFFFFFFFFFFFFFFFFFF.......................... 15 | .......KKKKNnnnn~~KKKKKKKKKKKKKKKKKKHFFFFFFFffffffffFFFFFFFFFFFFFFFFFFF......................... 16 | .......KKKKOooookkkKKKKKKKKKKKKKKKKKHFFFFFFFfffffffffFFFFFFFFFFFFFFFFFF......................... 17 | ........FFKKkk~~~k((KKKHFFFFFGKKKKKKHFFFFFFfffffffffffFGKKHFFFFFFFFFFFFF........................ 18 | ........FFKKk~~kk((kkkkh~~~~~gkkkkkkhffffffffffffffffffgkkhff________'FF........................ 19 | .........FKKkkkk((kkkkkh~~~~~gkkkkkkhffffffffffffffffffgkkhff_______''FFF....................... 20 | .........FKKkkk((kk~~kkh~~~~~gkkkkkkhffffffffffffffffffgkkhf_______''fFFF....................... 21 | ..........KKkk((k~~kkkkh~~~~~gkkkkkkhffffffffffffffffffgkkhf______''_fFFFF...................... 22 | ..........KKk((kkk~~kkkh~~~~~gkkkkkkhffffffffffffffffffgkkhf_____''__fFFFF...................... 23 | ...........K((kkkkkkkkkh~~~~~gkkkkkkhffffffffffffffffffgkkhf____''___fFFFFF..................... 24 | ...........KKKKKKKKKKKKHFFFFFGKKKKKKHFFFFFFfffffffffFFFGKKHFFFFF'____fFFFFF..................... 25 | ............KKKKKKKKKKKKKKKKKKKKKKKKHFFFFFFF++++++++FFFFFFFFFFFFF____fFFFFFF.................... 26 | ............FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+++++++++FFFFFFFFFFFF____fFFFFFF.................... 27 | .............FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFfffffffffffFFFFFFFFFF&____fFFFFFFF................... 28 | .............FFFFFFFFFFFFFf%%fffffffffffffffffffffffffffffff____&&___fFFFFFFF................... 29 | ..............FFFFFFFFFFFFff%%ffffffffffffffffffffffffffffff_____&&__fFFFFFFFF.................. 30 | ..............FFFFFFFFFFFFfff%%fffffffffffffffffffffffffffff______&&_fFFFFFFFF.................. 31 | ...............FFFFFFFFFFFffff%%ffffffffffffffffffffffffffff_______&&fFFFFFFFFF................. 32 | ...............FFFFFFFFFFFfffff%FFFFFFFFFFFfffffffffFFFFFFFFFFFFFFFFFFFFFFFFFFF................. 33 | ................FFFFFFFFFFffffffFFFFFFFFFFFfffffffffFFFFFFFFFFFFFFFFFFFFFFFFFFFF................ 34 | ................FFFFFFFFFFffffffFFFFFFFFFFFFffffffffFFFFFGHFFFFFFFFFFFFFFFFFFFFF................ 35 | .................FFFFFFFFFffffffFFFFFFFFFFFF,,,,,,,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFF............... 36 | .................FFFFFFFFFfffffffFFFFFFFFFFF,,,,,,,,,FFFFFFFFFFFFFFFFFFFFFFFFFFFF............... 37 | ..................FFFFFFFF~~~~~~$$FFFFFFFFFfffffffffffFFGHCAAAAAAABGHFFFFFFFFFFFFF.............. 38 | ..................FFFFFFFF~~~~~$$~~fffffffffffffffffffffghcaaaaaaabghffffff##ffFFF.............. 39 | ...................FFFFFFF~~~~$$~~~fffffffffffffffffffffghcaaaaaaabghfffff##fffFFFF............. 40 | ...................FFFFFFF~~~$$~~~ffffffffffffffffffffffghcaaaaaaabghffff##ffffFFFF............. 41 | ....................FFFFFF~~$$~~~~ffffffffffffffffffffffffcaaaaaaabfffff##fffffFFFFF............ 42 | ....................FFFFFF~$$~~~~fffffffffffffffffffffffffcaaaaaaabffff##ffffffFFFFF............ 43 | .....................FFFFF$$~~~~~~ffffffffffffffffffffffffcaaaaaaabfff##fffffffFFFFFF........... 44 | .....................FFFFFFFFFFFFFFFFFFFFFFfffffffffFFFFFFCAAAAAAABFFF#ffffffffFFFFFF........... 45 | ......................FFFFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFFFFFFFFFFFFfffffffffFFFFFFF.......... 46 | ......................FFFFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFFFFFFFFFFFFFffffffffFFFFFFF.......... 47 | .......................FFFFFFFFFFFFFFFFFFFF--fffffffFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFF......... 48 | .......................FFFFFFFFFFFFf..ffffff--ffffffFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFF......... 49 | ........................FFFFFFFFFFFff..ffffff--fffffFFFFFFFFFFFFFFFFFFFffffiiiiIFFFFFFFF........ 50 | ........................FFFFFFFFFFFfff..ffffff--ffffFFFFFFFFFFFFFFFFFFFffffjjjjJFFFFFFFF........ 51 | .........................FFFFFFFFFFffff..ffffff--fffFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFFFF....... 52 | .........................FFFFFFFFFFfffff.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFFFF....... 53 | ..........................FFFFFFFFIiiiiffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFFFFF...... 54 | ..........................FFFFFFFFJjjjjffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFffffffffFFFFFFFFFFF...... 55 | ...........................FFFFFFFFffffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_______fFFFFFFFFFFFF..... 56 | ...........................FFFFFFFFfffffffFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_______fFFFFFFFFFFFF..... 57 | ............................FFFFFFFffffff//FFFFFFFFFFFFFFFFFFGKKKKHFFF""______fFFFFFFFFFFFFF.... 58 | ............................FFFFFFFfffff//fffffffffff!fffffffgkkkkh____""_____fFFFFFFFFFFFFF.... 59 | .............................FFFFFFffff//fffffff2ff0f!ff5ff7fgkkkkh_____""____fFFFFFFFFFFFFFF... 60 | .............................FFFFFFfff//fffffffffffff!fffffffgkkkkh______""___fFFFFFFFFFFFFFF... 61 | ..............................FFFFFff//ffffffffffffff!fffffffgkkkkh_______""__fFFFFFFFFFFFFFFF.. 62 | ..............................FFFFFf//fffffffff3ff1ff!f4ff6ffgkkkkh________""ffFFFFFFFFFFFFFFF.. 63 | ...............................FFFF//ffffffffffffffff!fffffffgkkkkhfffffffff""fFFFFFFFFFFFFFFFF. 64 | ...............................FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGKKKKHFFFFFFFFFFFFFFFFFFFFFFFFFFFF. 65 | ################################################################################################ -------------------------------------------------------------------------------- /picooffroad/work/tracks/readme.txt: -------------------------------------------------------------------------------- 1 | 1. edit map file in text editor 2 | 2. pack with Pico8RacingMapPacker 3 | 3. copy to lua file --------------------------------------------------------------------------------