| ▲ | wren6991 14 hours ago |
| > PSP games running in the browser without an emulator. The game's MIPS machine code is translated ahead of time into C++, compiled to WebAssembly, and linked against a small reimplementation of the PSP's operating system and graphics chip that draws with WebGL2. Feels slightly pedantic to point this out, but this describes an emulation stack. A lot of emulators are already doing some kind of lift+JIT on the target's machine code (just not through WASM) |
|
| ▲ | gzalo 13 hours ago | parent | next [-] |
| Most people would say that Ahead-of-time (AOT) compilation or static recompilation is not considered traditional emulation. |
| |
| ▲ | pjmlp 11 hours ago | parent | next [-] | | We called emulation back in the last century and it hasn't changed. The original hardware doesn't exist on the target system. Taking a famous example out of many others I could have reached for, > Emulation had been around for a while as a concept, but FX!32 went one stage further. It analyzed the way programs worked and, after the program ran, used binary translation to produce dynamic-link library (DLL) files of native Alpha code that the application could execute the next time it ran. This way even in the early 1.0 release, the FX!32 achieved speeds for Win32 x86 applications that ran 40-50% as fast as native x86 code, with a 70% speed projected as likely with improved optimization. Version 1.5, released by Compaq in 1999, added support for the Alpha 21264 (EV6) CPU, including emulation of Intel's MMX instruction set. https://en.wikipedia.org/wiki/FX!32 | |
| ▲ | rowanG077 13 hours ago | parent | prev [-] | | You are no longer emulating the CPU but the rest of the system you are absolutely emulating. So I think it's very close to traditional emulation. | | |
|
|
| ▲ | Rohansi 11 hours ago | parent | prev | next [-] |
| That's almost what WINE does which is, apparently, not an emulator. Small reimplementation of Windows userspace and translates DirectX to Vulkan/OpenGL. So if I do x86 -> ARM binary translation AOT and run that with WINE, is it an emulator? |
| |
| ▲ | armada651 3 hours ago | parent | next [-] | | https://github.com/wine-mirror/wine/blob/master/loader/main.... According to WINE itself, WINE is an emulator. Ultimately there's a spectrum between emulation and native code and where you draw the line is an arbitrary and subjective choice. | |
| ▲ | wren6991 6 hours ago | parent | prev [-] | | If WINE is not an emulator then YAML ain't a markup language | | |
| ▲ | knome 6 hours ago | parent | next [-] | | you would expect wine to be translating the executable in some way if you considered it emulation, but wine loads and runs the binaries as they are. it provides a PE/COFF loader and linux-native replacements for windows apis. the machine code of the original executable is running directly on the processor. | |
| ▲ | taspeotis 3 hours ago | parent | prev [-] | | Yelling At My Laptop | | |
| ▲ | manwe150 3 hours ago | parent [-] | | I asked Fable to write me a small CRUD app recently so I could keep tabs on my todo list and edit it. It chose to write the database as YAML files stored in git. When I asked why not use a database, it defended the choice by saying it would let me edit the files by hand whenever I wanted and sync them to where ever I wanted and get reliable git merges maintaining consistency, so I didn’t have to rely on remote database operations for that. | | |
|
|
|
|
| ▲ | wvenable 11 hours ago | parent | prev | next [-] |
| It appears to me like an emulator where the binary is just compiled in based on the huge amount of code like this: https://github.com/jessicanataliagta/PSPRecomp/blob/main/pro... |
| |
|
| ▲ | jpgvm 5 hours ago | parent | prev | next [-] |
| I was going to argue but: > That code runs against a register file and a model of the PSP's memory. From the project README. That to me, is an emulator. |
|
| ▲ | tra3 14 hours ago | parent | prev [-] |
| I think of an emulator as a separate project/product typically. Perhaps that's what they are saying? |
| |
| ▲ | wren6991 13 hours ago | parent [-] | | Yeah, maybe that's the difference. I was trying to probe the semantics, not so much a "gotcha". Parts of this stack are quite bespoke for this one game. | | |
| ▲ | bananaboy 35 minutes ago | parent [-] | | Yeah this seems to be the case in all of the recent “recomp” projects I’ve seen popping up lately. They turn it into c++ but it’s not what you’d imagine when you think of decompiling - it’s basically assembly-like writing to a machine/cpu state object representing memory/registers etc. And then they also call it a native port to boot! |
|
|