A HTML5/WebGL Journey (various fixes included to download)

Previous topic - Next topic

spacefractal

#15
Finally im also just got File Sync to the localDB to work, which means PowerUp Elevation does now save its settings and othr stuff.

Cool.

Look like im have various documentation how im have done all those changes to the default version. Now the game looks and plays very nice.

With those changes and the game also fell nice on the android and on the Android phone just fell like a native app.

The above can also leads we dropping native android support, but instead using this platform to build android app (and even ios and such). who know?

HTML5/webgl is fun.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

spacefractal

Here is how its look today, when compared to the first version..... much better. On Android, its fullscreen when you launch the game and orientation works pretty nice, even you should not play the game in the vertical mode. hihi. But does not crash.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

Kitty Hello

Looks awesome.
I updated the GIT repository with a lot of changes. The HTML5 port now uses SDL2. You can choose what SDL version to use with the WANT_SDL_VERSION 1 or 2 macro.
I plan focusing more on SDL2 in the future, maybe it's about time to remove some ancient code now (PALM_WEBOS, GPHWIZ, GP2X, TINYGL etc.)
Can you merge your changes with the mouse and the console logging, please?
I'll make a template html page, that has no extras - just the canvas. If you want fullscreen, F11 should do the trick on firefox - we must get that working. On mobile platforms, the html page should always start in fullscreen mode...

spacefractal

#18
im should do a push, but im think im will wait, due _build.bat wasent working for me (paths not found, so cannot test and make sure anything working). So...... here is the files (now all done in a tool):

https://1drv.ms/u/s!An17V5n5xcPmlk0_2vZpuMfOASOC?e=TOEPdZ



Currectly html5extras.gbas is required as im could not push the source code project yet, so Gernot you need to do that yourself, and changes what you need.

The canvas resize issue:

Code (glbasic) Select
    SUB GLB_ON_LOOP:
    ?IFDEF HTML5
        // CheckGameControllerStatus() (this is not working yet, but is working on it).
        LOCAL changed=CheckCanvasSize()
        IF changed=TRUE
            OS_Default_Settings(1) // or whatever you do when the canvas is got resized).
        ENDIF
    ?ENDIF

as GETDESKTOPSIZE() does not reflect to the SETSCREEN, but uses GETSCREENSIZE() instead. That works fine.

To get Filesystem working:
To get filesystem working using localdb, do a FileSystem_Mount() top in your code, and then dong a FileSystem_Sync() after a CLOSEFILE after you saved a file.

The default folder is /glbasicapp, but the platforminfo returns /tmp, which allways should been /glbasicapp. Etc a savefile$ could looks like SaveFile$="/glbasicapp/"+title$+"_AutoSave.ini"

HTMLKEY()
This should been a replacements for KEY() when using HTML5. Howover its will call javascript when html5 is used, or other than that, its will just return a regular KEY(). A little bit warning is. Keyboard layout using html is different than Windows is used (as you can see with the arrows key values). Im diddent do translate the scancodes for that yet.

HTMLPLAYSOUND()
As a direct replacements to get volume working. Im have still not checked panning throught. When running this commands on other platforms does just do a PLAYSOUND of course.

to get right click working:
uses the new lib_glb_plus.js and replace the old one. that one does not needs any added changes to get it working, so you can uses MOUSESTATE with right click now (the posttool does that for you now).

console logging:
This is completly removed as we has no need at all! We can uses Microsoft Edge logcat from the dev tools instead. All prints from c++ and Javascript is actuelly sendt to that by default, which is cool.

define HTML5:
but this code in the top:
Code (glbasic) Select
?DEFINE HTML5

?IFDEF ANDROID
    ?UNDEF HTML5
    USEMUSICOMMANDS=0
?ENDIF

?IFDEF WIN64
    ?DEFINE WIN32
    USEMUSICOMMANDS=0
?ENDIF

?IFDEF WIN32
    ?UNDEF HTML5
    ?DEFINE DESKTOP
    USEMUSICOMMANDS=0
?ENDIF
?IFDEF HTML5
    USEMUSICOMMANDS=1
?ENDIF

Im was not sure which define emscripten was used, as DEFINE HTML5 should been added really.

PS. Im used USEMUSICOMMANDS for the html5 define, because ISSOUNDPLAYING() did NOT working for HTML5, which has a low priotity really. But Steam Deck did not like any music commands, but was required for HTML5.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

Kitty Hello

I'll see to find time and implement your changes. I updated to the latest Emscripten version and thus, we're soon up to date with the latest and greatest technology.

spacefractal

#20
Cool. Should not been that hard really.

the main issues im found was:
- Canvas diddent resize at all - This would property take most time to implement.
- ISSOUNDPLAYING() did not work, but did workaround instead. Not a biggie for me.
- MouseState did not work with right click. This was very easy to fix.
- KEY() does not work with some keys. This should been qutie easy to fix by the javascript call when implement it to KEY(). Been beware keylayout in JavaScript is not the same on Windows.
- Game saving can work using sync. This could been fixable in souce code under start and when CLOSEFILE is used.

Also im found not a way we can discard a folder under compilet (exclude files) as well im thinks we automatic should DEFINE HTML5 when emscripten is used for easier thing.

Im still missing how im can communicate with strings between JavaScript<->C++. When we got that to work, im can reimplement Gamecontroller support. The javascript is ready. but cant comminucate it to c++ throught yet, even its should been possible.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

spacefractal

Im have just replaced html5extras.gbas in the dropbox folder. Now its should grecefull countinue, if fs.sync() fails on the asserts(), which can been happens in some browsers and device. So its simply just countinue without saving (and warn the user with a no saving).

Hopefully PowerUp Elevation now can startup. Save or not.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

spacefractal

added a another game to my itch page:
https://spacefractal.itch.io/spot-race

That one, im fell, is one of a game with short time and works excellent as a html5 game.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

Qedo

Don't work, stop to "LOADING SPOT RACE"
(Firefox 101)

spacefractal

#24
Hmmm. its works fine here with both Firefox 110 and also 101 on my pc Windows 10 machine and on mobile (Chrome and Opera). So im need the logcat as im have no check what happens.

But do Im guess its property due assert() issue again? Even im did try to get around it with a try/catch, so its should countinue with no saving (hence im choosen this Spot Race version is a shorter game than the steam one). But its called directly from c++.

PS. In Firefore its Ctrl/Shift/i and then under console (that why we dont need a inbuildt logcat to a textfield as you can still check them). Im only need the last lines, so im can see where its stoppede.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

Qedo

Console:

Unknown category for SetEventRecordingEnabled: page_load
Key event not available on some keyboard layouts: key="i" modifiers="accel,alt,shift" id="key_browserToolbox" browser.xhtml
Missing resource in locale en-GB: devtools/client/toolbox.ftl
Unknown property '-moz-border-radius'.  Declaration dropped.

spacefractal

Its not the correct one. A succesful startup should look like this:

Code (glbasic) Select

downloading...
index.html:171 WARNING: using emscripten GL emulation. This is a collection of limited workarounds, do not expect it to work.
index.html:171 WARNING: using emscripten GL emulation unsafe opts. If weirdness happens, try -s GL_UNSAFE_OPTS=0
index.html:177 Preparing... (0/1)
index.html:177 Downloading data... (16384/18057863)
index.html:177 Downloading data... (65536/18057863)
index.html:177 Downloading data... (589824/18057863)
index.html:177 Downloading data... (983040/18057863)
index.html:177 Downloading data... (1638400/18057863)
index.html:171 wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.
index.html:171 falling back to ArrayBuffer instantiation
favicon.ico:1
       Failed to load resource: the server responded with a status of 404 (File not found)
index.html:177 Downloading data... (3178496/18057863)
index.html:177 Downloading data... (5570560/18057863)
index.html:177 All downloads complete.
index.html:177 Preparing... (0/1)
index.html:177 Preparing... (0/2)
index.html:177 Preparing... (0/3)
index.html:177 Preparing... (0/4)
index.html:177 Preparing... (0/5)
index.html:177 Preparing... (0/6)
index.html:177 Preparing... (0/7)
index.html:177 Preparing... (0/8)
index.html:177 Preparing... (0/9)
index.html:177 Preparing... (0/10)
index.html:177 Preparing... (0/11)
index.html:177 Preparing... (0/12)
index.html:177 Preparing... (0/13)
index.html:177 Preparing... (0/14)
index.html:177 Preparing... (0/15)
index.html:177 Preparing... (0/16)
index.html:177 Preparing... (0/17)
index.html:177 Preparing... (0/18)
index.html:177 Preparing... (0/19)
index.html:177 Preparing... (0/20)
index.html:177 Preparing... (0/21)
index.html:177 Preparing... (0/22)
index.html:177 Preparing... (0/23)
index.html:177 Preparing... (0/24)
index.html:177 Preparing... (0/25)
index.html:177 Preparing... (0/26)
index.html:177 Preparing... (0/27)
index.html:177 Preparing... (0/28)
index.html:177 Preparing... (0/29)
index.html:177 Downloading data... (10485760/18057863)
index.html:177 Downloading data... (15269888/18057863)
index.html:177 Downloading data... (17891328/18057863)
index.html:177 Downloading data... (18057863/18057863)
index.html:177 Preparing... (1/29)
index.html:177 Preparing... (2/29)
index.html:177 Preparing... (3/29)
index.html:177 Preparing... (4/29)
index.html:177 Preparing... (5/29)
index.html:177 Preparing... (6/29)
index.html:177 Preparing... (7/29)
index.html:177 Preparing... (8/29)
index.html:177 Preparing... (9/29)
index.html:177 Preparing... (10/29)
index.html:177 Preparing... (11/29)
index.html:177 Preparing... (12/29)
index.html:177 Preparing... (13/29)
index.html:177 Preparing... (14/29)
index.html:177 Preparing... (15/29)
index.html:177 Preparing... (16/29)
index.html:177 Preparing... (17/29)
index.html:177 Preparing... (18/29)
index.html:177 Preparing... (19/29)
index.html:177 Preparing... (20/29)
index.html:177 Preparing... (21/29)
index.html:177 Preparing... (22/29)
index.html:177 Preparing... (23/29)
index.html:177 Preparing... (24/29)
index.html:177 Preparing... (25/29)
index.html:177 Preparing... (26/29)
index.html:177 Preparing... (27/29)
index.html:177 Preparing... (28/29)
index.html:177 All downloads complete.
index.html:177 Running...
SpotRace.js:1 Can't init SDL-Video.
SpotRace.js:1 unknown SDL-emscripten error
SpotRace.js:1 Can't init SDL-Timer/Audio.
SpotRace.js:1 unknown SDL-emscripten error
SpotRace.js:1 Can't init SDL-IO.
SpotRace.js:1 unknown SDL-emscripten error
SpotRace.js:1 timer
SpotRace.js:1 rbow
SpotRace.js:1 rbow init
SpotRace.js:1 SDL_init video
SpotRace.js:1 SDL_GetVideoInfo = 300x150 @ 0 bpp. Screen 640x480
SpotRace.js:1 SDL 1.2 mode
SpotRace.js:1 Request SDL_OPENGL = 67108864
SpotRace.js:1 Request double buffer
SpotRace.js:1 set up SDL for OpenGL mode
SpotRace.js:1  -WebGL mode: 32 bits, SDL_OPENGL=!0x04000000!
SpotRace.js:1 set up SDL for OpenGL mode RGBA=8,8,8,8; Depth=24, Stencil=8, DoubleBuffer=1
SpotRace.js:1 Setting video mode: 640x480x32 vidflags=0x4000000
index.html:171 WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supports
SpotRace.js:1 SDL_SetVideoMode seems to be 1
SpotRace.js:1 Testing glCommands
SpotRace.js:1 OpenGL is ready for use
SpotRace.js:1
SpotRace.js:1 Vendor     : WebKit
SpotRace.js:1 Renderer   : WebKit WebGL
SpotRace.js:1 Version    : OpenGL ES 2.0 (WebGL 1.0 (OpenGL ES 2.0 Chromium))
SpotRace.js:1 Extensions : ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_disjoint_timer_query EXT_float_blend EXT_frag_depth EXT_shader_texture_lod EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic EXT_sRGB KHR_parallel_shader_compile OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compre...
SpotRace.js:1
SpotRace.js:1 skipping size tests
index.html:171 TODO: glShadeModel
SpotRace.js:1 get accurate timer - 1st call
SpotRace.js:1 flip - 1st call
SpotRace.js:1 ext: glMultiTexCoord2fARB                  [FAILED]ext: glMapBufferARB                        [FAILED]ext: glUnmapBufferARB                      [FAILED]BGRA ext NOT supported
SpotRace.js:1 ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_disjoint_timer_query EXT_float_blend EXT_frag_depth EXT_shader_texture_lod EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic EXT_sRGB KHR_parallel_shader_compile OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context WEBGL_multi_draw GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements GL_ARB_texture_compression GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic
SpotRace.js:1 Texture size limit: 16384
SpotRace.js:1 init fbo
SpotRace.js:1 2D VP
SpotRace.js:1 OGRB init [OK]
SpotRace.js:1 Cptn
SpotRace.js:1 Network
SpotRace.js:1 Input
SpotRace.js:1 Window mode
SpotRace.js:1 Create DXin
SpotRace.js:1 Key 00=ff
SpotRace.js:1 Key 01=1b
SpotRace.js:1 Key 02=31
SpotRace.js:1 Key 03=32
SpotRace.js:1 Key 04=33
SpotRace.js:1 Key 05=34
SpotRace.js:1 Key 06=35
SpotRace.js:1 Key 07=36
SpotRace.js:1 Key 08=37
SpotRace.js:1 Key 09=38
SpotRace.js:1 Key 0a=39
SpotRace.js:1 Key 0b=30
SpotRace.js:1 Key 0c=2d
SpotRace.js:1 Key 0d=3d
SpotRace.js:1 Key 0e=08
SpotRace.js:1 Key 0f=09
SpotRace.js:1 Key 10=71
SpotRace.js:1 Key 11=77
SpotRace.js:1 Key 12=65
SpotRace.js:1 Key 13=72
SpotRace.js:1 Key 14=74
SpotRace.js:1 Key 15=79
SpotRace.js:1 Key 16=75
SpotRace.js:1 Key 17=69
SpotRace.js:1 Key 18=6f
SpotRace.js:1 Key 19=70
SpotRace.js:1 Key 1a=5b
SpotRace.js:1 Key 1b=5d
SpotRace.js:1 Key 1c=0d
SpotRace.js:1 Key 1d=e0
SpotRace.js:1 Key 1e=61
SpotRace.js:1 Key 1f=73
SpotRace.js:1 Key 20=64
SpotRace.js:1 Key 21=66
SpotRace.js:1 Key 22=67
SpotRace.js:1 Key 23=68
SpotRace.js:1 Key 24=6a
SpotRace.js:1 Key 25=6b
SpotRace.js:1 Key 26=6c
SpotRace.js:1 Key 27=3b
SpotRace.js:1 Key 28=27
SpotRace.js:1 Key 29=60
SpotRace.js:1 Key 2a=e1
SpotRace.js:1 Key 2b=5c
SpotRace.js:1 Key 2c=7a
SpotRace.js:1 Key 2d=78
SpotRace.js:1 Key 2e=63
SpotRace.js:1 Key 2f=76
SpotRace.js:1 Key 30=62
SpotRace.js:1 Key 31=6e
SpotRace.js:1 Key 32=6d
SpotRace.js:1 Key 33=2c
SpotRace.js:1 Key 34=2e
SpotRace.js:1 Key 35=2f
SpotRace.js:1 Key 36=e5
SpotRace.js:1 Key 37=55
SpotRace.js:1 Key 38=e2
SpotRace.js:1 Key 39=20
SpotRace.js:1 Key 3a=39
SpotRace.js:1 Key 3b=3a
SpotRace.js:1 Key 3c=3b
SpotRace.js:1 Key 3d=3c
SpotRace.js:1 Key 3e=3d
SpotRace.js:1 Key 3f=3e
SpotRace.js:1 Key 40=3f
SpotRace.js:1 Key 41=40
SpotRace.js:1 Key 42=41
SpotRace.js:1 Key 43=42
SpotRace.js:1 Key 44=43
SpotRace.js:1 Key 45=53
SpotRace.js:1 Key 46=47
SpotRace.js:1 Key 47=5f
SpotRace.js:1 Key 48=60
SpotRace.js:1 Key 49=61
SpotRace.js:1 Key 4a=56
SpotRace.js:1 Key 4b=5c
SpotRace.js:1 Key 4c=5d
SpotRace.js:1 Key 4d=5e
SpotRace.js:1 Key 4e=57
SpotRace.js:1 Key 4f=59
SpotRace.js:1 Key 50=5a
SpotRace.js:1 Key 51=5b
SpotRace.js:1 Key 52=62
SpotRace.js:1 Key 53=63
SpotRace.js:1 Key 54=ff
SpotRace.js:1 Key 55=ff
SpotRace.js:1 Key 56=5c
SpotRace.js:1 Key 57=44
SpotRace.js:1 Key 58=45
SpotRace.js:1 Key 59=ff
SpotRace.js:1 Key 5a=ff
SpotRace.js:1 Key 5b=ff
SpotRace.js:1 Key 5c=ff
SpotRace.js:1 Key 5d=ff
SpotRace.js:1 Key 5e=ff
SpotRace.js:1 Key 5f=ff
SpotRace.js:1 Key 60=ff
SpotRace.js:1 Key 61=ff
SpotRace.js:1 Key 62=ff
SpotRace.js:1 Key 63=ff
SpotRace.js:1 Key 64=68
SpotRace.js:1 Key 65=69
SpotRace.js:1 Key 66=6a
SpotRace.js:1 Key 67=ff
SpotRace.js:1 Key 68=ff
SpotRace.js:1 Key 69=ff
SpotRace.js:1 Key 6a=ff
SpotRace.js:1 Key 6b=ff
SpotRace.js:1 Key 6c=ff
SpotRace.js:1 Key 6d=ff
SpotRace.js:1 Key 6e=ff
SpotRace.js:1 Key 6f=ff
SpotRace.js:1 Key 70=ff
SpotRace.js:1 Key 71=ff
SpotRace.js:1 Key 72=ff
SpotRace.js:1 Key 73=ff
SpotRace.js:1 Key 74=ff
SpotRace.js:1 Key 75=ff
SpotRace.js:1 Key 76=ff
SpotRace.js:1 Key 77=ff
SpotRace.js:1 Key 78=ff
SpotRace.js:1 Key 79=ff
SpotRace.js:1 Key 7a=ff
SpotRace.js:1 Key 7b=ff
SpotRace.js:1 Key 7c=ff
SpotRace.js:1 Key 7d=ff
SpotRace.js:1 Key 7e=ff
SpotRace.js:1 Key 7f=ff
SpotRace.js:1 Key 80=ff
SpotRace.js:1 Key 81=ff
SpotRace.js:1 Key 82=ff
SpotRace.js:1 Key 83=ff
SpotRace.js:1 Key 84=ff
SpotRace.js:1 Key 85=ff
SpotRace.js:1 Key 86=ff
SpotRace.js:1 Key 87=ff
SpotRace.js:1 Key 88=ff
SpotRace.js:1 Key 89=ff
SpotRace.js:1 Key 8a=ff
SpotRace.js:1 Key 8b=ff
SpotRace.js:1 Key 8c=ff
SpotRace.js:1 Key 8d=67
SpotRace.js:1 Key 8e=ff
SpotRace.js:1 Key 8f=ff
SpotRace.js:1 Key 90=ff
SpotRace.js:1 Key 91=ff
SpotRace.js:1 Key 92=ff
SpotRace.js:1 Key 93=ff
SpotRace.js:1 Key 94=ff
SpotRace.js:1 Key 95=ff
SpotRace.js:1 Key 96=ff
SpotRace.js:1 Key 97=ff
SpotRace.js:1 Key 98=ff
SpotRace.js:1 Key 99=ff
SpotRace.js:1 Key 9a=ff
SpotRace.js:1 Key 9b=ff
SpotRace.js:1 Key 9c=58
SpotRace.js:1 Key 9d=e4
SpotRace.js:1 Key 9e=ff
SpotRace.js:1 Key 9f=ff
SpotRace.js:1 Key a0=ff
SpotRace.js:1 Key a1=ff
SpotRace.js:1 Key a2=ff
SpotRace.js:1 Key a3=ff
SpotRace.js:1 Key a4=ff
SpotRace.js:1 Key a5=ff
SpotRace.js:1 Key a6=ff
SpotRace.js:1 Key a7=ff
SpotRace.js:1 Key a8=ff
SpotRace.js:1 Key a9=ff
SpotRace.js:1 Key aa=ff
SpotRace.js:1 Key ab=ff
SpotRace.js:1 Key ac=ff
SpotRace.js:1 Key ad=ff
SpotRace.js:1 Key ae=ff
SpotRace.js:1 Key af=ff
SpotRace.js:1 Key b0=ff
SpotRace.js:1 Key b1=ff
SpotRace.js:1 Key b2=ff
SpotRace.js:1 Key b3=ff
SpotRace.js:1 Key b4=ff
SpotRace.js:1 Key b5=54
SpotRace.js:1 Key b6=ff
SpotRace.js:1 Key b7=9a
SpotRace.js:1 Key b8=e6
SpotRace.js:1 Key b9=ff
SpotRace.js:1 Key ba=ff
SpotRace.js:1 Key bb=ff
SpotRace.js:1 Key bc=ff
SpotRace.js:1 Key bd=ff
SpotRace.js:1 Key be=ff
SpotRace.js:1 Key bf=ff
SpotRace.js:1 Key c0=ff
SpotRace.js:1 Key c1=ff
SpotRace.js:1 Key c2=ff
SpotRace.js:1 Key c3=ff
SpotRace.js:1 Key c4=ff
SpotRace.js:1 Key c5=48
SpotRace.js:1 Key c6=ff
SpotRace.js:1 Key c7=4a
SpotRace.js:1 Key c8=52
SpotRace.js:1 Key c9=4b
SpotRace.js:1 Key ca=ff
SpotRace.js:1 Key cb=50
SpotRace.js:1 Key cc=ff
SpotRace.js:1 Key cd=4f
SpotRace.js:1 Key ce=ff
SpotRace.js:1 Key cf=4d
SpotRace.js:1 Key d0=51
SpotRace.js:1 Key d1=4e
SpotRace.js:1 Key d2=49
SpotRace.js:1 Key d3=7f
SpotRace.js:1 Key d4=ff
SpotRace.js:1 Key d5=ff
SpotRace.js:1 Key d6=ff
SpotRace.js:1 Key d7=ff
SpotRace.js:1 Key d8=ff
SpotRace.js:1 Key d9=ff
SpotRace.js:1 Key da=ff
SpotRace.js:1 Key db=e3
SpotRace.js:1 Key dc=e7
SpotRace.js:1 Key dd=76
SpotRace.js:1 Key de=ff
SpotRace.js:1 Key df=ff
SpotRace.js:1 Key e0=ff
SpotRace.js:1 Key e1=ff
SpotRace.js:1 Key e2=ff
SpotRace.js:1 Key e3=ff
SpotRace.js:1 Key e4=ff
SpotRace.js:1 Key e5=ff
SpotRace.js:1 Key e6=ff
SpotRace.js:1 Key e7=ff
SpotRace.js:1 Key e8=ff
SpotRace.js:1 Key e9=ff
SpotRace.js:1 Key ea=ff
SpotRace.js:1 Key eb=ff
SpotRace.js:1 Key ec=ff
SpotRace.js:1 Key ed=ff
SpotRace.js:1 Key ee=ff
SpotRace.js:1 Key ef=ff
SpotRace.js:1 Key f0=ff
SpotRace.js:1 Key f1=ff
SpotRace.js:1 Key f2=ff
SpotRace.js:1 Key f3=ff
SpotRace.js:1 Key f4=ff
SpotRace.js:1 Key f5=ff
SpotRace.js:1 Key f6=ff
SpotRace.js:1 Key f7=ff
SpotRace.js:1 Key f8=ff
SpotRace.js:1 Key f9=ff
SpotRace.js:1 Key fa=ff
SpotRace.js:1 Key fb=ff
SpotRace.js:1 Key fc=ff
SpotRace.js:1 Key fd=ff
SpotRace.js:1 Key fe=ff
SpotRace.js:1 Key ff=ff
SpotRace.js:1 Key 100=ff
SpotRace.js:1 Key 101=ff
SpotRace.js:1 Key 102=ff
SpotRace.js:1 Key 103=ff
SpotRace.js:1 Key 104=ff
SpotRace.js:1 Key 105=ff
SpotRace.js:1 Key 106=ff
SpotRace.js:1 Key 107=ff
SpotRace.js:1 Key 108=ff
SpotRace.js:1 Key 109=ff
SpotRace.js:1 Key 10a=ff
SpotRace.js:1 Key 10b=ff
SpotRace.js:1 Key 10c=ff
SpotRace.js:1 Key 10d=ff
SpotRace.js:1 Key 10e=ff
SpotRace.js:1 Key 10f=ff
SpotRace.js:1 Key 110=ff
SpotRace.js:1 Key 111=ff
SpotRace.js:1 Key 112=ff
SpotRace.js:1 Key 113=ff
SpotRace.js:1 Key 114=ff
SpotRace.js:1 Key 115=ff
SpotRace.js:1 Key 116=ff
SpotRace.js:1 Key 117=ff
SpotRace.js:1 Key 118=ff
SpotRace.js:1 Key 119=ff
SpotRace.js:1 Key 11a=ff
SpotRace.js:1 Key 11b=ff
SpotRace.js:1 Key 11c=ff
SpotRace.js:1 Key 11d=ff
SpotRace.js:1 Key 11e=ff
SpotRace.js:1 Key 11f=ff
SpotRace.js:1 Key 120=ff
SpotRace.js:1 Key 121=ff
SpotRace.js:1 Key 122=ff
SpotRace.js:1 Key 123=ff
SpotRace.js:1 Key 124=ff
SpotRace.js:1 Key 125=ff
SpotRace.js:1 Key 126=ff
SpotRace.js:1 Key 127=ff
SpotRace.js:1 Key 128=ff
SpotRace.js:1 Key 129=ff
SpotRace.js:1 Key 12a=ff
SpotRace.js:1 Key 12b=ff
SpotRace.js:1 Key 12c=ff
SpotRace.js:1 Key 12d=ff
SpotRace.js:1 Key 12e=ff
SpotRace.js:1 Key 12f=ff
SpotRace.js:1 Key 130=ff
SpotRace.js:1 Key 131=ff
SpotRace.js:1 Key 132=ff
SpotRace.js:1 Key 133=ff
SpotRace.js:1 Key 134=ff
SpotRace.js:1 Key 135=ff
SpotRace.js:1 Key 136=ff
SpotRace.js:1 Key 137=ff
SpotRace.js:1 Key 138=ff
SpotRace.js:1 Key 139=ff
SpotRace.js:1 Key 13a=ff
SpotRace.js:1 Key 13b=ff
SpotRace.js:1 Key 13c=ff
SpotRace.js:1 Key 13d=ff
SpotRace.js:1 Key 13e=ff
SpotRace.js:1 Key 13f=ff
SpotRace.js:1 Key 140=ff
SpotRace.js:1 Key 141=ff
SpotRace.js:1 Key 142=ff
SpotRace.js:1 Key 143=ff
SpotRace.js:1 Key 144=ff
SpotRace.js:1 sdl_grab
SpotRace.js:1 getexe
SpotRace.js:1 cd
SpotRace.js:1 exepath=curdir= .
SpotRace.js:1 shoeboxing...
SpotRace.js:1 init gettimer
SpotRace.js:1 clear screen
SpotRace.js:1 flip
SpotRace.js:1 mk2D
SpotRace.js:1 finding font...
SpotRace.js:1 open sound: 44100 Hz 2 chan, buffers 4096, format -32752
SpotRace.js:1 Init Finalized
SpotRace.js:1 trying to FileSystem_Mount() the localdb()
SpotRace.js:1 done
SpotRace.js:1 [GLB]->Graphics Resoulutuon: 300x150
SpotRace.js:1 [GLB]->Scaling Used: .3051757812
SpotRace.js:1 [GLB]->Frames Per Second: 60
6WebGL: INVALID_OPERATION: texParameter: no texture bound to target
SpotRace.js:1 emsc-loop: GLB_ON_LOOP
SpotRace.js:1 [GLB]->Graphics Resoulutuon: 1707x846
SpotRace.js:1 [GLB]->Scaling Used: 1.376953125
SpotRace.js:1 [GLB]->Frames Per Second: 60
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 1.wav
index.html:171 Cannot find preloaded audio /Media/1.wav
SpotRace.js:1 [GLB]->error in PAINT(): mark
SpotRace.js:1 [GLB]->Load
index.html:177
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 2.wav
index.html:171 Cannot find preloaded audio /Media/2.wav
SpotRace.js:1 [GLB]->Sprite Loaded: marking.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 3.wav
index.html:171 Cannot find preloaded audio /Media/3.wav
SpotRace.js:1 [GLB]->Sprite Loaded: black.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 trying TO do a FS.syncfs(TRUE)
SpotRace.js:1 done
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 4.wav
index.html:171 Cannot find preloaded audio /Media/4.wav
SpotRace.js:1 [GLB]->Sprite Loaded: colors.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 5.wav
index.html:171 Cannot find preloaded audio /Media/5.wav
SpotRace.js:1 [GLB]->Sprite Loaded: spots_2.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 6.wav
index.html:171 Cannot find preloaded audio /Media/6.wav
SpotRace.js:1 [GLB]->Sprite Loaded: cir.png
SpotRace.js:1 [GLB]->Sprite Loaded: noise.jpg
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 7.wav
index.html:171 Cannot find preloaded audio /Media/7.wav
SpotRace.js:1 [GLB]->Sprite Loaded: bg2.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 8.wav
index.html:171 Cannot find preloaded audio /Media/8.wav
SpotRace.js:1 [GLB]->Sprite Loaded: bg3.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 9.wav
index.html:171 Cannot find preloaded audio /Media/9.wav
SpotRace.js:1 [GLB]->Sprite Loaded: bg1.png
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 10.wav
index.html:171 Cannot find preloaded audio /Media/10.wav
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 12.wav
index.html:171 Cannot find preloaded audio /Media/12.wav
SpotRace.js:1 [GLB]->Load
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 11.wav
index.html:171 Cannot find preloaded audio /Media/11.wav
SpotRace.js:1 [GLB]->LoadGameFile()
SpotRace.js:1 [GLB]->LoadStr: /glbasicapp/SpotRace_hiScore.ini 1
SpotRace.js:1 [GLB]->FileFound
SpotRace.js:1 [GLB]->LOAD A GAME....
SpotRace.js:1 [GLB]->LoadStr: /glbasicapp/SpotRace_AutoSave.ini 1
SpotRace.js:1 [GLB]->FileFound
SpotRace.js:1 [GLB]->STATUS LOAD: Play
SpotRace.js:1 [GLB]->tmenu.reset
SpotRace.js:1 [GLB]->tmenu.load
SpotRace.js:1 [GLB]->SOUND_OPTION: 0
SpotRace.js:1 [GLB]->score.load
SpotRace.js:1 [GLB]->SoundPlay: fx10
SpotRace.js:1 [GLB]->Play
index.html:171 Cannot find preloaded audio /Media/race_for_the_circle.mp3
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 12.wav
SpotRace.js:1 [GLB]->Play
SpotRace.js:1 [GLB]->SoundLoad()
SpotRace.js:1 [GLB]->SoundLoad: 13.wav
SpotRace.js:1 request: fopen("13.wav", "rb") failed
SpotRace.js:1 [GLB]->Play
SpotRace.js:1 [GLB]->Graphics Resoulutuon: 875x846
SpotRace.js:1 [GLB]->Scaling Used: 1.068115234
SpotRace.js:1 [GLB]->Frames Per Second: 60
SpotRace.js:1 [GLB]->Play


Since its seen the game was started, so its somewhere after comply of [GLB]-> lines. Also sound files that fails is property becaues its search more than one folder.

If its does not show more, then im have no clue what its really happens. Spooky as its works fine here, a least with the Windows version.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

spacefractal

#27
Just updated the game, so its now have a counter. remember to hold control-f5 when update the game. on some browser caching can been senative. Its works, when you see a [counter] on the "Loading Spot Race" line.

EDIT: and updated the game again. Some savegame bugs, when played in 4x4 fixed. But if the game does start, im would like to know which number its stopped to (1-32).
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/

Qedo

i tried again but the game crashes at LOAD SPOT RACE (0] or [2] and once at [4].
I tried on Chrome latest version on the same win10 PC and it works. On android perfect

spacefractal

#29
so its crash loading on some png images. wierd and even when its some times crash. hmmm. Im do remember im have seen that issue before, not just on html5, but also on android (AND on Window) as well.

Im have updated again, and have resaved various of the png files in gimp using compression 8 in RGBA format and only uses power of 2 files.

Also just to make sure, if GLB_ON_LOOP() is asyncron (im have no idea yet), then its wont call the loading twice on the same image, if its should been this case.

Its also wierd as on this machine its did worked with Firefox 101 as well. Not just on newest version.
Genius.Greedy Mouse - Karma Miwa - Spot Race - CatchOut - PowerUp Elevation - The beagle Jam - Cave Heroes 2023 - https://spacefractal.itch.io/