A battle theme for my game
Boy, oh boy. Making video games takes a bunch of work.
I’ve decided to release my game as a serial, like a comic book.
I will need to make a couple of enemies, puzzles, sfx, throw it all in a level and move on to the next entry.
Hopefully I can bundle everything in a multi cart, or picotron cart.
edit:
removed reverb
I'm having trouble understanding the clip function. When I use it with a stationary camera it works as I would expect it to but when the camera follows the player it hides everything I'm trying to clip. I'm probably missing something obvious here. Any help would be greatly appreciated!
function _init() p={ sp=16, x=63, y=63 } end function _update() if btn(⬅️) then p.x-=1 elseif btn(➡️) then p.x+=1 elseif btn(⬆️) then p.y-=1 elseif btn(⬇️) then p.y+=1 end --i comment out the camera --for stationary movement --in this example camera(p.x-63,p.y-63) end function _draw() cls() map() if p.x>72 and p.x<90 and p.y>32 and p.y<64 then clip(p.x,p.y,8,4,true) spr(p.sp,p.x,p.y) clip() else spr(p.sp,p.x,p.y) end end |
not sure if this is a bug in picotron or just in the docs, but in the gfx pipeline doc it says that the colour tables are accessed like this:
out_col = peek(0x8000+coltab*0x1000 + target_col*64 + draw_col) |
but to get the colour table working properly in practice i have to swap the target and draw colours like this:
function c_set_table (draw_color, target_color, result) poke (0x8000 + 64 * draw_color + target_color, result) end |
thought i'd post a demonstration of generating simple dither patterns for fillp in case it was useful to anyone!
feel free to use under the CC license or mit license or public domain
dither.lua:
-- threshold map from https://en.wikipedia.org/wiki/Ordered_dithering local threshold_map = { 0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5, } local function make_mask (value) local mask = 0 for i = 1, 16 do mask = mask * 2 if threshold_map [i] >= value then mask = mask + 1 end end return mask end local dither_masks = {} for i = 0, 16 do dither_masks[i] = make_mask (i) [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=145139#p) |
About
A classic example of scope-creep 😅
What started off as an exercise to learn how to do create a cool "Tron"-style theme in Picotron
...eventually turned into a Theme+multi-Wallpaper pack (WITH Installer!) 😇
Installation
Run the following from the Picotron console:
load #pico_tron
Then do <CTRL/CMD+R> to run the installer
- To install the TRON-style Picotron theme, click Install [Theme]
- To install the multi-Wallpaper cart, click Install [Wallpaper]
- To change wallpaper (at any time), click [Next Wallpaper]
NOTE: In order to persist the above installation, the following paths need to exist:
Any time something does a notify(), if "RSHIFT Magnify" is enabled, the mouse cursor and the icons at the top of the desktop get black boxes around them, and applications seem to have issues updating graphics in windowed mode. After the notify(), opening applications in windowed mode seems to tank the framerate as well.
I'm only on Linux, unable to test other OSs.
Issue is not present in version 0.1.0b2_amd64 binary.
Issue is present in both static and dynamic binaries for 0.1.0d
Issue resets on restarting picotron, but resumes on next notify()
Toggling "RSHIFT Magnify" does not clear issue
Steps to recreate issue:
- Move/remove/rename your existing lexaloffle folder
- mv ~/.lexaloffle ~/.lexaloffle.old
- Launch picotron
- ./picotron
- Enable magnifier
- Picotron menu > System Settings
- Page 2
- Select checkbox "RSHIFT Magnify"
- Trigger a notification
Hello @zep. I had to dig into the bug where text in text editors would overlap for some reasonand I noticed something: on Windows, the following snippet causes the issue 100% when pasted from notepad:
adasd the game |
Of course, I don't think copy-pasting it from here would work. As a matter of fact, there should be two blank lines and there's only one, so there's something altering the text, be it the BBS, the browser or something else.
So, I hacked in gui_ed.lua:insert_multiline_string
a way to read the string and its hexdump in the console log in the following snippet. It's ugly but it's functional.
local res = "" --str = str:gsub("\r", "") -- I'll get to that for i=1, str:len() do local c = str:sub(i,i) local co = ord(c) local cs = c if co < 32 then cs = ("<%02x>"):format(co) end res ..= ("[%s][%02x]"):format(cs, co) end printh(res) |
I spotted the presence `[<0d>][0d]
This is a simple example on how circle collision works.
All you need from this cartridge is the function:
function circ_col(c1, c2) local dx = c1.pos.x - c2.pos.x local dy = c1.pos.y - c2.pos.y local distance = sqrt(dx*dx + dy*dy) return distance <= (c1.r + c2.r) end |
If you want to check if two circles are colliding, you simply pass them as parameters c1 and c2 see an example bellow:
c1 = { pos={x=64,y=64}, r = 4 --size the radius would have to be for a 8x8 sprite } c2 = { pos={x=70,y=70}, r = 8 --size the radius would have to be for a 8x8 sprite } collides = false function _update() collides = circ_col(c1, c2) end function _draw() cls() if collides then print("colliding",4,4,11) end --draw the circles here - mind you in most projects you woudn't, usually you would have them invisible and have them --at the same position (or slightly offsetted) as your player --i would recommend drawing them anyway at the start to see that the are always where they are supposed to be circ(c1.pos.x,c2.pos.y,c1.r,11) circ(c2.pos.x,c2.pos.y,c2.r,8) end function circ_col(c1, c2) local dx = c1.pos.x - c2.pos.x local dy = c1.pos.y - c2.pos.y local distance = sqrt(dx*dx + dy*dy) return distance <= (c1.r + c2.r) end |
Picotron is sparkling!
Just a simple screensaver I made for Picotron, I might update it one of these next days.
You can edit the cart to print whatever on screen, your name, your team's name...
For the next project I guess I could build a statue for @zep. Who's in?
hey @zep, I've found a nasty coroutine(?)/multival bug. I'm on Linux + picotron 0.1.0d.
tl;dr: sometimes select("#",tostr(i))
is 2, possibly triggered by calling coresume() with extra args.
I ran into this initially because add({},3,nil)
is a runtime error now (it used to work in PICO-8, but now it throws bad argument #2 to 'add' (position out of bounds)
). I had some code: add(list,quote(arg))
that was crashing as if quote() was returning a second value for some reason, even though the code for quote() definitely returned just one value. (surrounding it in parens (to only keep the first return value) fixed my bug: add(list,(quote(arg)))
)
Version A of the code is very short, and trips the assert inside spin
maybe 50% of the time? sometimes many runs in a row don't trigger the assert, but sometimes many runs in a row all trigger the assert. (maybe that's just statistics tho). Version B is a bit more complex but always trips the assert instantly for me.
I wanted to learn how to make a wallpaper that would adapt to the desktop theme. I wasn't sure what to make, but my little quilt was right next to me on the couch, and I thought it would make a good subject for a wallpaper :)
It was a challenge to decide which shades to assign to which colors, but it's so important in quilting to think about the level of contrast in your design, so I knew I could get it to work out.
I would love to see someone turn this into a quilt randomizer. Now that would be a cool wallpaper!
Here is the real quilt. My wife and I designed and pieced it together, and then I hand-quilted it. It's about 2' by 2'.
Poochie Survivors!
Can you survive to 11:00 minutes in the new 'Help me Balance' update?
- 4 new Poochies
- 2 new weapons
- 2 new items
- Old weapons have been buffed (maybe too much?)
- Fetch Stick now targets enemies
- New results screen
- Stuff to do at home
- Make the clock faster
- Faster performance
- Bangin' music
- 1 secret character
- Take a snooze
- Bark for fun!
I'd love some feedback on how easy or difficult you think it is. Balancing the attack powers and enemies has been quite the challenge. <3
Been experimenting to get the hang of the synth, and we figured we'd donate some of the fruits of that experimentation to the community. Two channels, eight music patterns, six SFX, four instruments, CC BY-NC 4.0. Would love to hear if y'all use it (or its instrument designs) for anything.