Log In  
Follow
EBArtSoft

Hi,

Let me introduce...

PICO-8 Home Server

It's not a game, it's not a cart, it's a tool.

This is a private dedicated browsable library server for showcasing your own games or broadcasting your fav all over your house, share with your family and introduce pico to your friends. It's open source and fully configurable.

The idea come from me having trouble for sharing my cart (tbh, I'm not good at making PICO-8 game yet) with my daughter who don't know "thngs" about dev but know how to watch videos on youtube. So I made a simple web page with real-time-auto-packaging cart directly accessible from her favorite web browser. Since then the project has evolved...

Features

Easy handling web interface for listing shared carts

Everyone knows how to scroll and click a web page right ?
Use your PC or play with your mobile devices with wifi

Search, filter, sort, rate and browse paginated list

Or just hit "shuffle" and discover wonders from the community.

[ Continue Reading.. ]

8
10 comments



Hi,

I played around with Pico-8 and wanted a fancy way to build and run
custom cart when the idea came to me like the urge to go π :

I NEEDED A DEDICATED SPLORE SERVER !

One hour later it was alive

Showing custom list and loading whatever I want directly from SPLORE.
I was surprised at how simple it is to make a proxy.

First I edited "drivers\etc\hosts" but it lacked flexibility...

Then I came up with the idea of ​​replacing wininet.dll by a custom script.
That way you just put (or remove) the file near pico.exe and start it.
No user hack, no patch, no third party.

You can make your own proxy with the MASM32 code below
(I think I can share it with you because it does not disclose any flaws or infringe any copyright)
(The code of the server may be more sensitive to disclose)

Anyway, I swear that no "pico8.exe" were harmed during the making of this progam.

[hidden]

.386
.model flat, stdcall
option casemap :none
option Prologue:none
option Epilogue:none

include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib

.data

  _Wininet           dd 0
  _InternetOpenA     dd 0
  _InternetOpenUrlA  dd 0
  _InternetReadFile  dd 0
  _sInternetOpenA    db "InternetOpenA"                  , 0
  _sInternetOpenUrlA db "InternetOpenUrlA"               , 0
  _sInternetReadFile db "InternetReadFile"               , 0
  _URL               db "http://127.0.0.1:80"            , 0 ;<=== YOUR SERVER URL HERE
  _SysDLL            db "c:\windows\system32\WININET.DLL", 0 ;<=== YOUR PATH HERE
  temp               db 260 DUP(0)                           ; GIVE IT SOME SPACE !!

.code

; MAIN DLL FUNCTION
_DllMainCRTStartup proc instance:DWORD,reason:DWORD,unused:DWORD

  ; ONLY ON PROCESS ATTACH
  mov eax, [esp+8]
  cmp eax, 1
  jne @next

  ; GET REAL "WININET.DLL"
  push offset _SysDLL
  call LoadLibraryA
  mov _Wininet, eax

  ; GET REAL "InternetOpen"
  push offset _sInternetOpenA
  push _Wininet
  call GetProcAddress
  mov _InternetOpenA, eax 

  ; GET REAL "InternetOpenUrl"
  push offset _sInternetOpenUrlA
  push _Wininet
  call GetProcAddress
  mov _InternetOpenUrlA, eax 

  ; GET REAL "InternetReadFile"
  push offset _sInternetReadFile
  push _Wininet
  call GetProcAddress
  mov _InternetReadFile, eax 

@next:
  mov eax, 1
  ret 12
_DllMainCRTStartup endp

; FAKE "InternetOpen"
InternetOpenA proc
  jmp [_InternetOpenA]
InternetOpenA endp

; FAKE "InternetReadFile"
InternetReadFile proc
  jmp [_InternetReadFile]
InternetReadFile endp

; FAKE "InternetOpenUrl"
InternetOpenUrlA proc

  ; LAZY STRING REPLACE ^^
  mov eax, [esp+8]
  add eax, 25
  push eax
  push offset _URL
  call lstrcat
  mov [esp+8], eax

  ; CALL REAL "InternetOpenUrl"
  jmp [_InternetOpenUrlA]
InternetOpenUrlA endp

end

; DEF FILE LOOK LIKE =>
;LIBRARY WININET
;EXPORTS 
;
;InternetOpenA     @1
;InternetOpenUrlA  @2
;InternetReadFile  @3

[ Continue Reading.. ]

2
5 comments



Hi,

I had fun making a compilation of statistics on my cartridge library
(line of code, number of sprites, color etc...).

And I surprised myself when I learned that :

**1.15%** of all the cartridges are **Celeste fork**! (^w^ )

Other fun facts such as

The most used colors are :

  • N°0 with 72.06% [#000000] of all sprites (obviously empty pixels fall in that slot)
  • N°7 with 3.52% [#E8F1FF]

[ Continue Reading.. ]

2
0 comments



Hi,

This is my first post and I don't know if it's a good thing to write a question here, so let's see.

First of all I LOVE Pico-8 since years, a friend of mine introduce me to this awesome project in a game jam and I immediately felt good with it. But I am bad at drawing, composing music and coding innovative games so after that event I stopped lua coding and just continued reading news and playing cartridge made by other. You guys really make my eyes shine.

Well today I decided to contribute by making a cart reader, browser, assets extractor and a sound/music player and editor (to begin). Things are progressing well and I will soon be ready for public release. But... questions :

  • Is it legally authorized to distribute such tool ?
  • Do anybody (other than me) need/want it ?
  • Can someone help solve a pxa compression problem (maybe unicode related...) ? /!\ SOLVED

Screenshot of the actual cart browser (all WIP) :

Screenshot of the actual sound editor :

[ Continue Reading.. ]

6
6 comments