diff --git a/bios/Other/j2me-loader/color.fsh b/bios/Other/j2me-loader/color.fsh index 462b81db..d77f4347 100644 --- a/bios/Other/j2me-loader/color.fsh +++ b/bios/Other/j2me-loader/color.fsh @@ -1,27 +1,29 @@ -precision mediump float; -uniform sampler2D uSphereUnit; -uniform vec2 uSphereSize; -uniform vec3 uLightDir; -uniform float uDirIntensity; -uniform float uToonThreshold; -uniform float uToonHigh; -uniform float uToonLow; -varying vec3 vColor; -varying vec3 vNormal; -varying float vIsReflect; -varying float vAmbIntensity; - -void main() { - if (vAmbIntensity < -0.5) { - gl_FragColor = vec4(vColor, 1.0); - return; - } - vec4 spec = uSphereSize.x < -0.5 || vIsReflect < 0.5 ? - vec4(0.0) : texture2D(uSphereUnit, (normalize(vNormal).xy + 1.0) * 0.5 * uSphereSize); - float lambert_factor = max(dot(normalize(vNormal), uLightDir), 0.0); - float light = min(vAmbIntensity + uDirIntensity * lambert_factor, 1.0); - if (uToonThreshold > -0.5) { - light = light < uToonThreshold ? uToonLow : uToonHigh; - } - gl_FragColor = vec4(vColor * light + spec.rgb, 1.0); +precision mediump float; +uniform sampler2D uSphereUnit; +uniform vec2 uSphereSize; +uniform vec3 uLightDir; +uniform float uDirIntensity; +uniform float uToonThreshold; +uniform float uToonHigh; +uniform float uToonLow; +varying vec3 vColor; +varying vec3 vNormal; +varying float vIsReflect; +varying float vAmbIntensity; + +void main() { + if (vAmbIntensity < -0.5) { + gl_FragColor = vec4(vColor, 1.0); + return; + } + float lambert_factor = max(dot(normalize(vNormal), uLightDir), 0.0); + float light = min(vAmbIntensity + uDirIntensity * lambert_factor, 1.0); + if (uToonThreshold > -0.5) { + light = light < uToonThreshold ? uToonLow : uToonHigh; + } + vec3 color = vColor * light; + if (uSphereSize.x > -0.5 && vIsReflect > 0.5) { + color += texture2D(uSphereUnit, (vNormal.xy / 128.0 + 32.0) / uSphereSize).rgb; + } + gl_FragColor = vec4(color, 1.0); } \ No newline at end of file diff --git a/bios/Other/j2me-loader/color.vsh b/bios/Other/j2me-loader/color.vsh index d0b7252f..ddcc2504 100644 --- a/bios/Other/j2me-loader/color.vsh +++ b/bios/Other/j2me-loader/color.vsh @@ -1,28 +1,19 @@ -uniform mat4 uMatrix; -uniform mat4 uMatrixMV; -uniform vec3 uColor; -uniform float uAmbIntensity; -uniform bool uIsPrimitive; -attribute vec4 aPosition; -attribute vec3 aNormal; -attribute vec3 aColorData; -attribute vec2 aMaterial; -varying vec3 vColor; -varying vec3 vNormal; -varying float vIsReflect; -varying float vAmbIntensity; - -const float COLOR_UNIT = 1.0 / 255.0; -void main() { - gl_Position = uMatrix * aPosition; - vNormal = mat3(uMatrixMV) * aNormal; - if (uIsPrimitive) { - vColor = uColor.r < -0.5 ? vec3(aColorData * COLOR_UNIT) : uColor; - vIsReflect = 1.0; - vAmbIntensity = uAmbIntensity; - } else { - vColor = vec3(aColorData * COLOR_UNIT); - vIsReflect = aMaterial[1]; - vAmbIntensity = aMaterial[0] > 0.5 ? uAmbIntensity : -1.0; - } +uniform mat4 uMatrix; +uniform mat3 uNormalMatrix; +uniform float uAmbIntensity; +attribute vec4 aPosition; +attribute vec3 aNormal; +attribute vec3 aColorData; +attribute vec2 aMaterial; +varying vec3 vColor; +varying vec3 vNormal; +varying float vIsReflect; +varying float vAmbIntensity; + +void main() { + gl_Position = uMatrix * aPosition; + vNormal = uNormalMatrix * aNormal; + vColor = aColorData; + vIsReflect = aMaterial[1]; + vAmbIntensity = aMaterial[0] > 0.5 ? uAmbIntensity : -1.0; } \ No newline at end of file diff --git a/bios/Other/j2me-loader/libc++_shared.so b/bios/Other/j2me-loader/libc++_shared.so new file mode 100644 index 00000000..f76989fd Binary files /dev/null and b/bios/Other/j2me-loader/libc++_shared.so differ diff --git a/bios/Other/j2me-loader/libjavam3g.so b/bios/Other/j2me-loader/libjavam3g.so index d4828201..729df00c 100644 Binary files a/bios/Other/j2me-loader/libjavam3g.so and b/bios/Other/j2me-loader/libjavam3g.so differ diff --git a/bios/Other/j2me-loader/libmicro3d.so b/bios/Other/j2me-loader/libmicro3d.so index 290c26ea..f388ce77 100644 Binary files a/bios/Other/j2me-loader/libmicro3d.so and b/bios/Other/j2me-loader/libmicro3d.so differ diff --git a/bios/Other/j2me-loader/libmmapi_common.so b/bios/Other/j2me-loader/libmmapi_common.so new file mode 100644 index 00000000..a511e926 Binary files /dev/null and b/bios/Other/j2me-loader/libmmapi_common.so differ diff --git a/bios/Other/j2me-loader/libmmapi_eas.so b/bios/Other/j2me-loader/libmmapi_eas.so new file mode 100644 index 00000000..f7ac5f89 Binary files /dev/null and b/bios/Other/j2me-loader/libmmapi_eas.so differ diff --git a/bios/Other/j2me-loader/libmmapi_tsf.so b/bios/Other/j2me-loader/libmmapi_tsf.so new file mode 100644 index 00000000..3b0e96ee Binary files /dev/null and b/bios/Other/j2me-loader/libmmapi_tsf.so differ diff --git a/bios/Other/j2me-loader/liboboe.so b/bios/Other/j2me-loader/liboboe.so new file mode 100644 index 00000000..8bbd019b Binary files /dev/null and b/bios/Other/j2me-loader/liboboe.so differ diff --git a/bios/Other/j2me-loader/licenses.html b/bios/Other/j2me-loader/licenses.html index bcae72ac..e2939a2f 100644 --- a/bios/Other/j2me-loader/licenses.html +++ b/bios/Other/j2me-loader/licenses.html @@ -1,76 +1,82 @@ - - - - - - -

Android Compat Support Library

-

Copyright (C) 2005-2011 The Android Open Source Project
Apache License 2.0

- -

Android Preference Support Library

-

Copyright (C) 2005-2011 The Android Open Source Project
Apache License 2.0

- -

Android Room Persistence Library

-

Copyright (C) 2016 The Android Open Source Project
Apache License 2.0

- -

volley

-

Copyright (C) 2011 The Android Open Source Project
Apache License 2.0

- -

ACRA

-

Copyright (C) 2017
Apache License 2.0

- -

NoNonsense-FilePicker

-

Copyright (C) 2016 Jonas Kalderstam
Mozilla Public License 2.0

- -

AmbilWarna library

-

Copyright (C) 2009-2015 Yuku
Apache License 2.0

- -

ASM

-

Copyright (C) 2000-2011 INRIA, France Telecom
BSD License

- -

MobileFFmpeg

-

Copyright (C) 2018 Taner Sener
LGPL v3.0

- -

Gson

-

Copyright (C) 2008 Google Inc.
Apache License 2.0

- -

Midi Driver

-

Copyright (C) 2013 Bill Farmer
Apache License 2.0

- -

PNGJ

-

Copyright (C) 2009 Hernán J. González
Apache License 2.0

- -

RxJava

-

Copyright (C) 2016-present RxJava Contributors
Apache License 2.0

- -

RxAndroid

-

Copyright (C) 2015 The RxAndroid authors
Apache License 2.0

- -

Zip4j

-

Copyright (C) 2010 Srikanth Reddy Lingala
Apache License 2.0

- -

J2meLoader

-

Copyright (C) 2015-2016 Nickolay Savchenko
Apache License 2.0

- -

MIDPShell

-

Copyright (C) 2012 Kulikov Dmitriy
Apache License 2.0

- -

dx tool

-

Copyright (C) 2011 The Android Open Source Project
Apache License 2.0

- -

FreeJ2ME M3D(O) implementation

-

Copyright (C) 2018 David Richardson

- -

MicroEmulator

-

Copyright (C) 2006 Bartek Teodorczyk
LGPL 2.1 / Apache License 2.0

- -

Symbian OS

-

Copyright (C) 2003 Nokia Corporation and/or its subsidiary(-ies)
Eclipse Public License v1.0

- -

JL-Mod

-

Copyright (C) 2020-2022 Yury Kharchenko
Apache License 2.0

- -

App icon made by Nokia64

- - - + + + + + + +

Android Compat Support Library

+

Copyright (C) 2005-2011 The Android Open Source Project
Apache License 2.0

+ +

Android Preference Support Library

+

Copyright (C) 2005-2011 The Android Open Source Project
Apache License 2.0

+ +

Android Room Persistence Library

+

Copyright (C) 2016 The Android Open Source Project
Apache License 2.0

+ +

volley

+

Copyright (C) 2011 The Android Open Source Project
Apache License 2.0

+ +

ACRA

+

Copyright (C) 2017
Apache License 2.0

+ +

NoNonsense-FilePicker

+

Copyright (C) 2016 Jonas Kalderstam
Mozilla Public License 2.0

+ +

AmbilWarna library

+

Copyright (C) 2009-2015 Yuku
Apache License 2.0

+ +

ASM

+

Copyright (C) 2000-2011 INRIA, France Telecom
BSD License

+ +

MobileFFmpeg

+

Copyright (C) 2018 Taner Sener
LGPL v3.0

+ +

Gson

+

Copyright (C) 2008 Google Inc.
Apache License 2.0

+ +

Midi Driver

+

Copyright (C) 2013 Bill Farmer
Apache License 2.0

+ +

PNGJ

+

Copyright (C) 2009 Hernán J. González
Apache License 2.0

+ +

RxJava

+

Copyright (C) 2016-present RxJava Contributors
Apache License 2.0

+ +

RxAndroid

+

Copyright (C) 2015 The RxAndroid authors
Apache License 2.0

+ +

Zip4j

+

Copyright (C) 2010 Srikanth Reddy Lingala
Apache License 2.0

+ +

J2meLoader

+

Copyright (C) 2015-2016 Nickolay Savchenko
Apache License 2.0

+ +

MIDPShell

+

Copyright (C) 2012 Kulikov Dmitriy
Apache License 2.0

+ +

dx tool

+

Copyright (C) 2011 The Android Open Source Project
Apache License 2.0

+ +

FreeJ2ME M3D(O) implementation

+

Copyright (C) 2018 David Richardson

+ +

MicroEmulator

+

Copyright (C) 2006 Bartek Teodorczyk
LGPL 2.1 / Apache License 2.0

+ +

Sonivox EAS synthesizer

+

Copyright (c) 2004-2006 Sonic Network Inc.
Apache License 2.0

+ +

TinySoundFont - SoundFont2 synthesizer

+

Copyright (C) 2017-2018 Bernhard Schelling (Based on SFZero, Copyright (C) 2012 Steve Folta, https://github.com/stevefolta/SFZero)
MIT license

+ +

Symbian OS

+

Copyright (C) 2003 Nokia Corporation and/or its subsidiary(-ies)
Eclipse Public License v1.0

+ +

JL-Mod

+

Copyright (C) 2020-2026 Yury Kharchenko
Apache License 2.0

+ +

App icon made by Nokia64

+ + + diff --git a/bios/Other/j2me-loader/sprite.fsh b/bios/Other/j2me-loader/sprite.fsh index edc0d370..85d45811 100644 --- a/bios/Other/j2me-loader/sprite.fsh +++ b/bios/Other/j2me-loader/sprite.fsh @@ -1,19 +1,12 @@ -precision mediump float; -uniform vec2 uTexSize; -uniform sampler2D uTexUnit; -uniform vec3 uColorKey; -uniform bool uIsTransparency; -varying vec2 vTexture; - -const vec3 COLORKEY_ERROR = vec3(0.5 / 255.0); - -void main() { -#ifdef FILTER - vec4 color = texture2D(uTexUnit, vTexture / uTexSize); -#else - vec4 color = texture2D(uTexUnit, (floor(vTexture) + 0.5) / uTexSize); -#endif - if (uIsTransparency && all(lessThan(abs(color.rgb - uColorKey), COLORKEY_ERROR))) - discard; - gl_FragColor = vec4(color.rgb, 1.0); +precision mediump float; +uniform sampler2D uTextureUnit; +uniform bool uIsTransparency; +varying vec2 vTexture; + +void main() { + vec4 color = texture2D(uTextureUnit, vTexture); + if (uIsTransparency && color.a < 0.5) { + discard; + } + gl_FragColor = vec4(color.rgb, 1.0); } \ No newline at end of file diff --git a/bios/Other/j2me-loader/sprite.vsh b/bios/Other/j2me-loader/sprite.vsh index 7430ffdd..9f0ead8a 100644 --- a/bios/Other/j2me-loader/sprite.vsh +++ b/bios/Other/j2me-loader/sprite.vsh @@ -1,12 +1,13 @@ -attribute vec4 aPosition; -attribute vec2 aColorData; -varying vec2 vTexture; - -void main() { - gl_Position = aPosition; -#ifdef FILTER - vTexture = aColorData + 0.5; -#else - vTexture = aColorData; -#endif +uniform vec2 uTexSize; +attribute vec4 aPosition; +attribute vec2 aColorData; +varying vec2 vTexture; + +void main() { + gl_Position = aPosition; +#ifdef FILTER + vTexture = (aColorData + 0.5) / uTexSize; +#else + vTexture = aColorData / uTexSize; +#endif } \ No newline at end of file diff --git a/bios/Other/j2me-loader/system.props b/bios/Other/j2me-loader/system.props index dca7b82f..d75950e2 100644 --- a/bios/Other/j2me-loader/system.props +++ b/bios/Other/j2me-loader/system.props @@ -1,24 +1,25 @@ -microedition.configuration: CDLC-1.1 -microedition.profiles: MIDP-2.0 -microedition.encoding: ISO-8859-1 -microedition.platform: Nokia6233/05.10 -microedition.io.file.FileConnection.version: 1.0 -microedition.sensor.version: 1 -microedition.m3g.version: 1.1 -microedition.media.version: 1.0 -microedition.pim.version: 1.0 -microedition.location.version: 1.0 -supports.mixing: true -supports.audio.capture: true -supports.video.capture: true -supports.recording: true -com.siemens.mp.systemfolder.ringingtone: fs/MyStuff/Ringtones -com.siemens.mp.systemfolder.pictures: fs/MyStuff/Pictures -com.siemens.OSVersion: 11 -device.imei: 000000000000000 -com.siemens.IMEI: 000000000000000 -com.sonyericsson.imei: IMEI 00460101-501594-5-00 -com.nokia.mid.impl.isa.visual_radio_operator_id: 0 -com.nokia.mid.impl.isa.visual_radio_channel_freq: 0 -com.nokia.mid.ui.DirectGraphics.PIXEL_FORMAT: 565 -wireless.messaging.sms.smsc: +8613800010000 +microedition.configuration: CLDC-1.1 +microedition.profiles: MIDP-2.0 +microedition.encoding: ISO-8859-1 +microedition.platform: Nokia6233/05.10 +microedition.io.file.FileConnection.version: 1.0 +microedition.sensor.version: 1 +microedition.m3g.version: 1.1 +microedition.media.version: 1.0 +microedition.pim.version: 1.0 +microedition.location.version: 1.0 +supports.mixing: true +supports.audio.capture: true +supports.video.capture: true +supports.recording: true +com.siemens.mp.systemfolder.ringingtone: fs/MyStuff/Ringtones +com.siemens.mp.systemfolder.pictures: fs/MyStuff/Pictures +com.siemens.OSVersion: 11 +device.imei: 000000000000000 +com.siemens.IMEI: 000000000000000 +com.sonyericsson.imei: IMEI 00460101-501594-5-00 +com.nokia.mid.impl.isa.visual_radio_operator_id: 0 +com.nokia.mid.impl.isa.visual_radio_channel_freq: 0 +com.nokia.mid.ui.DirectGraphics.PIXEL_FORMAT: 565 +com.nokia.mid.ui.softnotification: true +wireless.messaging.sms.smsc: +8613800010000 diff --git a/bios/Other/j2me-loader/tex.fsh b/bios/Other/j2me-loader/tex.fsh index 4ab075f2..3671aa67 100644 --- a/bios/Other/j2me-loader/tex.fsh +++ b/bios/Other/j2me-loader/tex.fsh @@ -1,40 +1,35 @@ -precision mediump float; -uniform sampler2D uTextureUnit; -uniform sampler2D uSphereUnit; -uniform vec2 uTexSize; -uniform vec3 uColorKey; -uniform vec2 uSphereSize; -uniform vec3 uLightDir; -uniform float uDirIntensity; -uniform float uToonThreshold; -uniform float uToonHigh; -uniform float uToonLow; -varying vec2 vTexture; -varying vec3 vNormal; -varying float vIsTransparency; -varying float vIsReflect; -varying float vAmbIntensity; - -const vec3 COLORKEY_ERROR = vec3(0.5 / 255.0); - -void main() { -#ifdef FILTER - vec4 color = texture2D(uTextureUnit, vTexture / uTexSize); -#else - vec4 color = texture2D(uTextureUnit, (floor(vTexture) + 0.5) / uTexSize); -#endif - if (vIsTransparency > 0.5 && all(lessThan(abs(color.rgb - uColorKey), COLORKEY_ERROR))) - discard; - if (vAmbIntensity < -0.5) { - gl_FragColor = vec4(color.rgb, 1.0); - return; - } - vec4 spec = uSphereSize.x < -0.5 || vIsReflect < 0.5 ? - vec4(0.0) : texture2D(uSphereUnit, (normalize(vNormal).xy + 1.0) * 0.5 * uSphereSize); - float lambert_factor = max(dot(normalize(vNormal), uLightDir), 0.0); - float light = min(vAmbIntensity + uDirIntensity * lambert_factor, 1.0); - if (uToonThreshold > -0.5) { - light = light < uToonThreshold ? uToonLow : uToonHigh; - } - gl_FragColor = vec4(color.rgb * light + spec.rgb, 1.0); +precision mediump float; +uniform sampler2D uTextureUnit; +uniform sampler2D uSphereUnit; +uniform vec2 uSphereSize; +uniform vec3 uLightDir; +uniform float uDirIntensity; +uniform float uToonThreshold; +uniform float uToonHigh; +uniform float uToonLow; +varying vec2 vTexture; +varying vec3 vNormal; +varying float vIsTransparency; +varying float vIsReflect; +varying float vAmbIntensity; + +void main() { + vec4 color = texture2D(uTextureUnit, vTexture); + if (vIsTransparency > 0.5 && color.a < 0.5) { + discard; + } + if (vAmbIntensity < -0.5) { + gl_FragColor = vec4(color.rgb, 1.0); + return; + } + float lambert_factor = max(dot(normalize(vNormal), uLightDir), 0.0); + float light = min(vAmbIntensity + uDirIntensity * lambert_factor, 1.0); + if (uToonThreshold > -0.5) { + light = light < uToonThreshold ? uToonLow : uToonHigh; + } + color.rgb *= light; + if (uSphereSize.x > -0.5 && vIsReflect > 0.5) { + color.rgb += texture2D(uSphereUnit, (vNormal.xy / 128.0 + 32.0) / uSphereSize).rgb; + } + gl_FragColor = vec4(color.rgb, 1.0); } \ No newline at end of file diff --git a/bios/Other/j2me-loader/tex.vsh b/bios/Other/j2me-loader/tex.vsh index e8d97dbc..15ec6eb2 100644 --- a/bios/Other/j2me-loader/tex.vsh +++ b/bios/Other/j2me-loader/tex.vsh @@ -1,33 +1,26 @@ -uniform mat4 uMatrix; -uniform mat4 uMatrixMV; -uniform bool uIsTransparency; -uniform bool uIsPrimitive; -uniform float uAmbIntensity; -attribute vec4 aPosition; -attribute vec3 aNormal; -attribute vec2 aColorData; -attribute vec3 aMaterial; -varying vec2 vTexture; -varying vec3 vNormal; -varying float vIsTransparency; -varying float vIsReflect; -varying float vAmbIntensity; - -void main() { - gl_Position = uMatrix * aPosition; - vNormal = mat3(uMatrixMV) * aNormal; - if (uIsPrimitive) { - vIsTransparency = uIsTransparency ? 1.0 : 0.0; - vIsReflect = 1.0; - vAmbIntensity = uAmbIntensity; - } else { - vIsTransparency = aMaterial[2]; - vIsReflect = aMaterial[1]; - vAmbIntensity = aMaterial[0] > 0.5 ? uAmbIntensity : -1.0; - } -#ifdef FILTER - vTexture = aColorData + 0.5; -#else - vTexture = aColorData; -#endif +uniform mat4 uMatrix; +uniform mat3 uNormalMatrix; +uniform vec2 uTexSize; +uniform float uAmbIntensity; +attribute vec4 aPosition; +attribute vec3 aNormal; +attribute vec2 aColorData; +attribute vec3 aMaterial; +varying vec2 vTexture; +varying vec3 vNormal; +varying float vIsTransparency; +varying float vIsReflect; +varying float vAmbIntensity; + +void main() { + gl_Position = uMatrix * aPosition; + vNormal = uNormalMatrix * aNormal; + vIsTransparency = aMaterial[2]; + vIsReflect = aMaterial[1]; + vAmbIntensity = aMaterial[0] > 0.5 ? uAmbIntensity : -1.0; +#ifdef FILTER + vTexture = (aColorData + 0.5) / uTexSize; +#else + vTexture = aColorData / uTexSize; +#endif } \ No newline at end of file diff --git a/emulators/j2me-loader.yml b/emulators/j2me-loader.yml index 84e14485..58c2be09 100644 --- a/emulators/j2me-loader.yml +++ b/emulators/j2me-loader.yml @@ -50,11 +50,18 @@ notes: | ref: app/src/main/java/javax/microedition/media/Manager.java:138-140, app/src/main/java/ru/woesss/j2me/mmapi/synth/SynthPluginFactory.java:36-54 + The package carries every native library for arm64-v8a, armeabi-v7a, x86 and + x86_64. The hashes below are those of the x86_64 build, version 1.8.2-dev-1964, + the continuous release built from source_commit. + files: - name: Roboto-Regular.ttf system: j2me required: true bundled: true + size: 438780 + sha1: "d0860202be85147f3ce96d71aa88541d939a1aea" + md5: "bff5a23de5917c16288d7076ad684c1b" category: game_data description: "Typeface for the virtual keyboard and overlays" note: "Built into a Typeface at CanvasWrapper construction, which is a field initializer of Canvas and therefore runs for every MIDlet that opens one. Drives the key captions, the soft bar and the FPS counter." @@ -64,6 +71,9 @@ files: system: j2me required: true bundled: true + size: 949 + sha1: "402e03cdd612250de7863e9984b2b6ebac54de72" + md5: "34cb4519624e7b504fb0bbc1b3e613c1" category: game_data description: "Default microedition system properties" note: "Read from assets/defaults when a profile is created and again when the config screen or updateSystemProperties fills the field. Each line becomes a System.setProperty pair at MIDlet startup, carrying microedition.configuration, microedition.platform, the JSR version strings and the vendor identity values." @@ -73,6 +83,9 @@ files: system: j2me required: true bundled: true + size: 157 + sha1: "475e25d9bf8422d1faeae206488507d59bf7b716" + md5: "924e08886710123aaa0fa990da0f2be2" category: game_data description: "Vertex shader for the screen blitter" note: "Compiled when the GL surface is created and no user shader is selected. Graphics mode 1 is the default, so this is the standard display path. Also compiled as the Simple program of the Mascot Capsule renderer." @@ -82,6 +95,9 @@ files: system: j2me required: true bundled: true + size: 147 + sha1: "c6569e0e83d244224a829ce13699bc91ff01bfaf" + md5: "9f801bc9b0b148ae6d0368c27281d1bc" category: game_data description: "Fragment shader for the screen blitter" note: "Paired with simple.vsh. createProgram returning -1 raises RuntimeException at surface creation." @@ -91,6 +107,9 @@ files: system: j2me required: true bundled: true + size: 493 + sha1: "96e1d0b91b0cf3b61a1c6a9782dd087e06286c36" + md5: "efde617a923308f2d02ddc1bc18ecc87" category: game_data description: "Vertex shader for untextured Mascot Capsule geometry" note: "Program.create builds the tex, color, simple and sprite programs together whenever the renderer binds a target of a new size, so all four pairs are read on the first micro3d frame." @@ -100,6 +119,9 @@ files: system: j2me required: true bundled: true + size: 891 + sha1: "8cac05782651c5b9e56577d7f33486a32c00480f" + md5: "d07e54d4dd63209596eaf080cf8c35e3" category: game_data description: "Fragment shader for untextured Mascot Capsule geometry" note: "Carries the sphere map and toon shading uniforms of the Color program." @@ -109,6 +131,9 @@ files: system: j2me required: true bundled: true + size: 671 + sha1: "e8ad127bb080a8d61899aebf224e745bcc5eab44" + md5: "c6c3e762a7e1357e6769233faf240981" category: game_data description: "Vertex shader for textured Mascot Capsule geometry" note: "Built by Program.create alongside the other three pairs." @@ -118,15 +143,21 @@ files: system: j2me required: true bundled: true + size: 1083 + sha1: "eecb9e9f71079b1b8ab37210f58ec19d1c0f515a" + md5: "c00b8b73be298d613fbc33867eef97ad" category: game_data description: "Fragment shader for textured Mascot Capsule geometry" - note: "Carries the texture size, sphere map and toon shading uniforms of the Tex program." + note: "Carries the sphere map and toon shading uniforms of the Tex program. The texture size goes to tex.vsh." source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:234, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:258-267" - name: sprite.vsh system: j2me required: true bundled: true + size: 255 + sha1: "8bff9b5dce3c825669278ea1e744d0644a57e7cb" + md5: "c527845c331d6b060c657d1fbbdadcbf" category: game_data description: "Vertex shader for Mascot Capsule sprites" note: "Built by Program.create alongside the other three pairs." @@ -136,16 +167,21 @@ files: system: j2me required: true bundled: true + size: 286 + sha1: "94c1d85c818c14489f4e2aa10c4c33c14a395077" + md5: "247e772a2c38de937fd702d4ccc4d403" category: game_data description: "Fragment shader for Mascot Capsule sprites" - note: "Carries the texture size and transparency uniforms of the Sprite program." - source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:314, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:333-334" + note: "Carries the texture unit and transparency uniforms of the Sprite program. The texture size goes to sprite.vsh." + source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:314, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:334-336" - name: libc++_shared.so system: j2me required: true bundled: true - unsourceable: "built into this app's package only, and the same-named build of another app must not stand in" + size: 1337488 + sha1: "98b6547ca7af3fcf325ba236950a5e55401b94cb" + md5: "26756baa2bb82c113368f0a462213253" category: game_data description: "NDK C++ runtime for the native modules" note: "Named ahead of every other native library, in the M3G toolkit init, in the static initializer of micro3d Utils and in both synthesizer classes." @@ -155,6 +191,9 @@ files: system: j2me required: true bundled: true + size: 416488 + sha1: "74171083847c3836e1ffb9470d3b7e3e7dafe242" + md5: "0e273cd2a17253fa9f0f475f95283777" category: game_data description: "JSR-184 M3G engine" note: "Named by System.loadLibrary(\"javam3g\") outside any catch, the first time the toolkit reports the UI thread available. Built by ndkBuild from the m3g sources against GLES 1.1." @@ -164,6 +203,9 @@ files: system: j2me required: true bundled: true + size: 9912 + sha1: "a0e5ec65163c2952d9cb789053f1d309bd3d886f" + md5: "33d351c4d3a2eb991a1fe7d00297f77b" category: game_data description: "Mascot Capsule vertex and buffer routines" note: "Loaded from the static initializer of Utils, so the first call into the micro3d renderer brings it in. Holds fillBuffer, glReadPixels and the bone transform." @@ -173,7 +215,9 @@ files: system: j2me required: false bundled: true - unsourceable: "built into this app's package only, and the same-named build of another app must not stand in" + size: 329816 + sha1: "3f633bc545a826b1cb88517d4b77d10062e692a5" + md5: "df82e6bd14299af71cb2480f4eeaa4e3" category: game_data description: "Audio output stream of the sound bank synthesizers" note: "Named by both synthesizer classes ahead of their own libraries. Reached only when a sound bank is selected, and SynthPluginFactory catches the load failure and falls back to the Android synthesizer." @@ -183,7 +227,9 @@ files: system: j2me required: false bundled: true - unsourceable: "built into this app's package only, and the same-named build of another app must not stand in" + size: 16192 + sha1: "87d66343f9cf456a7b686a46872bd52d5b9345df" + md5: "847aaf47b6d0c565c72cd9d2ee63bd8a" category: game_data description: "Shared player and listener code of the synthesizer plugins" note: "Named by both synthesizer classes ahead of their own libraries. Same fallback as liboboe.so." @@ -193,7 +239,9 @@ files: system: j2me required: false bundled: true - unsourceable: "built into this app's package only, and the same-named build of another app must not stand in" + size: 607376 + sha1: "2bf1bdc26d3efb8a07d01aab0f86e091245944a0" + md5: "af8a1d656161c368cf2671ab9720a30d" category: game_data description: "Sonivox EAS synthesizer" note: "Loaded from the static initializer of LibEAS when a sound bank is selected. Links the sonivox wavetable engine statically and reads the bank as a DLS collection. A failure leaves the TinySoundFont plugin or the Android synthesizer." @@ -203,7 +251,9 @@ files: system: j2me required: false bundled: true - unsourceable: "built into this app's package only, and the same-named build of another app must not stand in" + size: 60392 + sha1: "55cded2de92eaf2ca3ca9ca5701d05536b5c4582" + md5: "c90296619ea218b83e246f62046400e9" category: game_data description: "TinySoundFont synthesizer" note: "Loaded from the static initializer of LibTSF when a sound bank is selected. Reads the bank as a SoundFont and plays standard MIDI files and tones. A failure leaves the EAS plugin or the Android synthesizer." @@ -213,6 +263,9 @@ files: system: j2me required: false bundled: true + size: 2510 + sha1: "465fae37aeb0ae34d0495044cd8c8c397e682bae" + md5: "bcc31ad30dcd2f59b3861880d63eff53" category: game_data description: "Third party licence text of the about screen" note: "Read when the licences dialog is opened and shown as HTML. Emulation never touches it." diff --git a/tests/test_bundled_identity.py b/tests/test_bundled_identity.py index 962093d3..0951d38b 100644 --- a/tests/test_bundled_identity.py +++ b/tests/test_bundled_identity.py @@ -6,9 +6,9 @@ each resolved by its bare name to whatever shared it: the patched ROM at the original's slot, the Wii U disc keys at the 3DS key slot, the OpenGL shader at the Vulkan one. An entry with a hash resolves by content first. -529 bundled entries still carry neither a hash nor `unsourceable:`. The -count per profile may only fall: a new entry is written with the hash of -the file the emulator ships. +512 bundled entries still carry neither a hash nor `unsourceable:`. The +count per profile may only fall, and the table records each fall: a new +entry is written with the hash of the file the emulator ships. """ from __future__ import annotations @@ -44,7 +44,7 @@ UNIDENTIFIED = { "fpse": 7, "fpse-ng": 7, "future-pinball": 18, - "future-pinball-fploader": 54, + "future-pinball-fploader": 52, "gba-emu": 1, "hakux": 1, "hcl": 3, @@ -52,12 +52,11 @@ UNIDENTIFIED = { "idtech4a++": 1, "ikemen": 32, "ines": 2, - "j2me-loader": 14, "jl-mod": 22, "kemulator": 4, "mastergear": 2, "mfme": 58, - "msx-emu": 10, + "msx-emu": 9, "my-boy": 1, "neo-emu": 3, "nethersx2": 2, @@ -102,6 +101,11 @@ class BundledFilesCarryTheirIdentity(unittest.TestCase): } self.assertEqual(grown, {}, "bundled entries need the shipped file's hash") + def test_the_table_records_every_fall(self): + # A baseline above the real count lets that profile grow back unseen: + # j2me-loader kept 14 after its 18 bundled files were all identified. + self.assertEqual(_unidentified(), UNIDENTIFIED) + class TheFixedEntriesGetTheirOwnBytes(unittest.TestCase): CASES = (