ttalvitie / browservice

Browservice: Browse the modern web on historical browsers
MIT License
1.07k stars 32 forks source link

Nintendo DSi Browser #56

Open ghost opened 2 years ago

ghost commented 2 years ago

I know this is kinda out of the scope of this project, but if anyone else wants to try, you should know

Browservice doesn't really work on the Nintendo DSi Video of it not really working

Log for anyone who cares:
./browservice-v0.9.3.0-x86_64.AppImage --vice-opt-http-listen-addr=0.0.0.0:8080
INFO @ src/main.cpp:153 -- Loading vice plugin retrojsvice.so
INFO @ src/main.cpp:160 -- Initializing vice plugin retrojsvice.so
INFO @ retrojsvice.so src/context.cpp:251 -- Creating retrojsvice plugin context
INFO @ src/xvfb.cpp:62 -- Starting Xvfb X server as child process
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
INFO @ src/xvfb.cpp:133 -- Xvfb X server :1 successfully started
[1213/130447.550964:ERROR:gl_surface_glx.cc(431)] glxQueryVersion failed
[1213/130447.552142:ERROR:gl_initializer_linux_x11.cc(166)] GLSurfaceGLX::InitializeOneOff failed.
[1213/130447.588182:ERROR:viz_main_impl.cc(161)] Exiting GPU process due to errors during initialization
[1213/130447.726435:WARNING:vaapi_wrapper.cc(586)] VAAPI video acceleration not available for swiftshader
[1213/130447.728720:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
INFO @ retrojsvice.so src/context.cpp:301 -- Starting plugin
INFO @ retrojsvice.so src/http.cpp:620 -- Starting HTTP server (listen address: 0.0.0.0:8080)
INFO @ retrojsvice.so src/http.cpp:628 -- HTTP server started successfully
INFO @ retrojsvice.so src/window_manager.cpp:317 -- New window requested by user
INFO @ src/server.cpp:50 -- Got request for new window from vice plugin
INFO @ src/window.cpp:460 -- Creating window 1
INFO @ retrojsvice.so src/window_manager.cpp:328 -- Creating window 1
INFO @ src/window.cpp:147 -- CEF browser for window 1 created
INFO @ src/bookmarks.cpp:114 -- Bookmark file '/home/playerd_uwu/.browservice/bookmarks' does not exist, using empty set of bookmarks
INFO @ retrojsvice.so src/window.cpp:480 -- Closing window 1 due to inactivity timeout
INFO @ src/window.cpp:504 -- Closing window 1
INFO @ src/window.cpp:189 -- Cleanup of CEF browser for window 1 complete
^CINFO @ src/main.cpp:125 -- Got signal 2, initiating shutdown
INFO @ src/server.cpp:27 -- Shutting down server
INFO @ retrojsvice.so src/context.cpp:336 -- Shutting down plugin
INFO @ retrojsvice.so src/http.cpp:542 -- Shutting down HTTP server
INFO @ retrojsvice.so src/http.cpp:585 -- HTTP server shutdown complete
INFO @ retrojsvice.so src/task_queue.cpp:114 -- Shutting down task queue
INFO @ retrojsvice.so src/task_queue.cpp:94 -- Task queue shutdown complete
INFO @ retrojsvice.so src/context.cpp:632 -- Plugin shutdown complete
INFO @ src/server.cpp:267 -- Server shutdown complete
INFO @ src/main.cpp:26 -- Quitting CEF message loop
INFO @ retrojsvice.so src/context.cpp:275 -- Destroying retrojsvice plugin context
INFO @ src/xvfb.cpp:159 -- Sending SIGTERM to the Xvfb X server child process to shut it down
INFO @ src/xvfb.cpp:164 -- Waiting for Xvfb child process to shut down
INFO @ src/xvfb.cpp:167 -- Successfully shut down Xvfb X server

uname -a of my machine: Linux playerd-uwu 5.4.163-1-MANJARO #1 SMP PREEMPT Wed Dec 1 14:47:09 UTC 2021 x86_64 GNU/Linux

lspci -v of my machine:
00:00.0 RAM memory: NVIDIA Corporation MCP65 Memory Controller (rev a3)
    Subsystem: Gigabyte Technology Co., Ltd Device 5001
    Flags: bus master, 66MHz, fast devsel, latency 0, NUMA node 0
    Capabilities: 

00:01.0 ISA bridge: NVIDIA Corporation MCP65 LPC Bridge (rev a3)
    Subsystem: Gigabyte Technology Co., Ltd Device 0c11
    Flags: bus master, 66MHz, fast devsel, latency 0, NUMA node 0

00:01.1 SMBus: NVIDIA Corporation MCP65 SMBus (rev a1)
    Subsystem: Gigabyte Technology Co., Ltd Device 0c11
    Flags: 66MHz, fast devsel, IRQ 11, NUMA node 0
    I/O ports at fc00 [size=64]
    I/O ports at 1c00 [size=64]
    I/O ports at 1c40 [size=64]
    Capabilities: 
    Kernel driver in use: nForce2_smbus
    Kernel modules: i2c_nforce2

00:01.2 RAM memory: NVIDIA Corporation MCP65 Memory Controller (rev a1)
    Subsystem: Gigabyte Technology Co., Ltd Device 0c11
    Flags: 66MHz, fast devsel, NUMA node 0

00:02.0 USB controller: NVIDIA Corporation MCP65 USB 1.1 OHCI Controller (rev a3) (prog-if 10 [OHCI])
    Subsystem: Gigabyte Technology Co., Ltd Device 5004
    Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 23, NUMA node 0
    Memory at fe02f000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: 
    Kernel driver in use: ohci-pci
    Kernel modules: ohci_pci

00:02.1 USB controller: NVIDIA Corporation MCP65 USB 2.0 EHCI Controller (rev a3) (prog-if 20 [EHCI])
    Subsystem: Gigabyte Technology Co., Ltd Device 5004
    Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 22, NUMA node 0
    Memory at fe02e000 (32-bit, non-prefetchable) [size=256]
    Capabilities: 
    Kernel driver in use: ehci-pci
    Kernel modules: ehci_pci

00:06.0 Ethernet controller: NVIDIA Corporation MCP65 Ethernet (rev a3)
    Subsystem: Gigabyte Technology Co., Ltd Device e000
    Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 25, NUMA node 0
    Memory at fe02d000 (32-bit, non-prefetchable) [size=4K]
    I/O ports at f000 [size=8]
    Capabilities: 
    Kernel driver in use: forcedeth
    Kernel modules: forcedeth

00:08.0 PCI bridge: NVIDIA Corporation MCP65 PCI bridge (rev a1) (prog-if 01 [Subtractive decode])
    Flags: bus master, 66MHz, fast devsel, latency 0, NUMA node 0
    Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
    I/O behind bridge: 0000c000-0000cfff [size=4K]
    Memory behind bridge: fde00000-fdefffff [size=1M]
    Prefetchable memory behind bridge: fdf00000-fdffffff [size=1M]
    Capabilities: 

00:09.0 IDE interface: NVIDIA Corporation MCP65 IDE (rev a1) (prog-if 8a [ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering])
    Subsystem: Gigabyte Technology Co., Ltd Device 5002
    Flags: bus master, 66MHz, fast devsel, latency 0, NUMA node 0
    Memory at 000001f0 (32-bit, non-prefetchable) [virtual] [size=8]
    Memory at 000003f0 (type 3, non-prefetchable) [virtual]
    Memory at 00000170 (32-bit, non-prefetchable) [virtual] [size=8]
    Memory at 00000370 (type 3, non-prefetchable) [virtual]
    I/O ports at ec00 [virtual] [size=16]
    Capabilities: 
    Kernel driver in use: pata_amd
    Kernel modules: pata_amd, pata_acpi, ata_generic

00:0a.0 SATA controller: NVIDIA Corporation MCP65 AHCI Controller (rev a3) (prog-if 01 [AHCI 1.0])
    Subsystem: Gigabyte Technology Co., Ltd Device b002
    Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 24, NUMA node 0
    I/O ports at 09f0 [size=8]
    I/O ports at 0bf0 [size=4]
    I/O ports at 0970 [size=8]
    I/O ports at 0b70 [size=4]
    I/O ports at d800 [size=16]
    Memory at fe02a000 (32-bit, non-prefetchable) [size=8K]
    Capabilities: 
    Kernel driver in use: ahci
    Kernel modules: ahci

00:0c.0 PCI bridge: NVIDIA Corporation MCP65 PCI Express bridge (rev a1) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0, NUMA node 0
    Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
    I/O behind bridge: 0000b000-0000bfff [size=4K]
    Memory behind bridge: fdd00000-fddfffff [size=1M]
    Prefetchable memory behind bridge: 00000000fdc00000-00000000fdcfffff [size=1M]
    Capabilities: 
    Kernel driver in use: pcieport

00:0d.0 PCI bridge: NVIDIA Corporation MCP65 PCI Express bridge (rev a1) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0, NUMA node 0
    Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
    I/O behind bridge: 0000a000-0000afff [size=4K]
    Memory behind bridge: f8000000-fbffffff [size=64M]
    Prefetchable memory behind bridge: 00000000d0000000-00000000dfffffff [size=256M]
    Capabilities: 
    Kernel driver in use: pcieport

00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
    Flags: fast devsel, NUMA node 0
    Capabilities: 

00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
    Flags: fast devsel, NUMA node 0

00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
    Flags: fast devsel, NUMA node 0

00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
    Flags: fast devsel, NUMA node 0
    Capabilities: 
    Kernel driver in use: k10temp
    Kernel modules: k10temp

00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
    Flags: fast devsel, NUMA node 0

01:08.0 Multimedia audio controller: Creative Labs EMU10k1 [Sound Blaster Live! Series] (rev 07)
    Subsystem: Creative Labs SB0100/SB0102 SBLive! 5.1
    Flags: bus master, medium devsel, latency 32, IRQ 18, NUMA node 0
    I/O ports at cc00 [size=32]
    Capabilities: 
    Kernel driver in use: snd_emu10k1
    Kernel modules: snd_emu10k1

01:08.1 Input device controller: Creative Labs SB Live! Game Port (rev 07)
    Subsystem: Creative Labs Gameport Joystick
    Flags: bus master, medium devsel, latency 32, NUMA node 0
    I/O ports at c800 [size=8]
    Capabilities: 
    Kernel driver in use: Emu10k1_gameport
    Kernel modules: emu10k1_gp

01:0e.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
    Subsystem: Gigabyte Technology Co., Ltd Motherboard
    Flags: bus master, medium devsel, latency 32, IRQ 18, NUMA node 0
    Memory at fdeff000 (32-bit, non-prefetchable) [size=2K]
    Memory at fdef8000 (32-bit, non-prefetchable) [size=16K]
    Capabilities: 
    Kernel driver in use: firewire_ohci
    Kernel modules: firewire_ohci

02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188EE Wireless Network Adapter (rev 01)
    Subsystem: Realtek Semiconductor Co., Ltd. Device 8197
    Flags: bus master, fast devsel, latency 0, IRQ 27, NUMA node 0
    I/O ports at bc00 [size=256]
    Memory at fddfc000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: 
    Kernel driver in use: rtl8188ee
    Kernel modules: rtl8188ee

03:00.0 VGA compatible controller: NVIDIA Corporation G92 [GeForce 9800 GT] (rev a2) (prog-if 00 [VGA controller])
    Subsystem: Point of View BV Device 902a
    Flags: bus master, fast devsel, latency 0, IRQ 26, NUMA node 0
    Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
    Memory at d0000000 (64-bit, prefetchable) [size=256M]
    Memory at f8000000 (64-bit, non-prefetchable) [size=32M]
    I/O ports at ac00 [size=128]
    Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
    Capabilities: 
    Kernel driver in use: nvidia
    Kernel modules: nouveau, nvidia
ip address:
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s6:  mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether DATA REMOVED brd ff:ff:ff:ff:ff:ff
3: wlp2s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether DATA REMOVED brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.66/24 brd 192.168.100.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 251036sec preferred_lft 251036sec
    inet6 fd38:bc01:c5cb:cb00:faf5:12cb:644c:5a36/64 scope global dynamic noprefixroute 
       valid_lft 7063sec preferred_lft 3463sec
    inet6 fe80::a519:713b:58f:785a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
IoIxD commented 2 years ago

Well the DSi Browser is based on Opera 8.5, and while the lowest tested Opera version is 10.63, if it runs on Firefox 2 and IE4 it probably has a decent chance of at least running on the DSi without too many more modifications.

I'll go ahead and grab Opera 8.5 and maybe I can get an actual error. I'm sorry that this is kind of a useless message, and I don't have a good excuse for double posting.

IoIxD commented 2 years ago

On Opera 8.5 on a 3GHz Windows 98 Machine, with 512MB ram - much more then the DSi - I get the exact same result. Howerver, I don't get any output in the Javascript console. In fact, the page works just fine...at less then 1 frame per second. After dragging the quality down to 10, I get what feels like 1 frame every 4 seconds, and dragging the window down from 1024x768 to around 358x259 (the minimum size at which Browservice will work), it's now usable. Keep in mind, this is on a machine almost 24 times as fast (and at that point the difference between ARM and x86 does not matter), with 32 times as much memory.

The conclusion therefore, is that it works just fine, but you need to somehow get the resolution and quality lower. From my vague recollection of using this browser as a kid, it always rendered pages larger then the actual screen, and sense this browser was developed independently of most websites at the time, the fix may involve being able to set the desired resolution and quality of the image via the url.

ttalvitie commented 2 years ago

Note that you can set the default quality to a lower value using the --vice-opt-default-quality command line option, for example

./browservice-v0.9.4.0-x86_64.AppImage --vice-opt-default-quality=20