Commit Graph

213 Commits

Author SHA1 Message Date
Stefanos Kornilios Mitsis Poiitidis f2d8ed06f5 arm7rec: Increase the emitter guarantee to 64 KB
I run into this with the x86-arm-arm7 backend because of per-block compile and largeish blocks
2015-08-11 19:13:11 +02:00
Stefanos Kornilios Mitsis Poiitidis b53b303c89 naomi: Portability fixes, add posix support
- Replaced BYTE, WORD, DWORD w/ u8, u16 & u32
- mmap/munmap/open

I should wrap the mmap fns in the oslib methinks...
2015-08-11 19:13:11 +02:00
Stefanos Kornilios Mitsis Poiitidis 7feeec0ceb naomi: Refactor cart logic to naomi_cart 2015-08-11 19:13:11 +02:00
Stefanos Kornilios Mitsis Poiitidis 7d0d2ba572 naomi: Initial support for TARGET_NAOMI, windows only
- Import naomi code from nullDC, modify and cleanup
- Only unprotected dimm-board support, custom lst files
- Still a compile option
- Boots naomi bios and some games, no input yet
2015-08-11 19:13:11 +02:00
Stefanos Kornilios Mitsis Poiitidis 9bc0a8ff0f shrec/bm: BM lookup table size follows RAM_SIZE 2015-08-11 19:13:11 +02:00
Stefanos Kornilios Mitsis Poiitidis 365accfde2 windows: fix TARGET_NO_NVMEM 2015-08-11 19:12:20 +02:00
Stefanos Kornilios Mitsis Poiitidis c3c2c68f21 Merge pull request #729 from reicast/wip/softrend
Basic and buggy software renderer
2015-08-11 17:43:47 +02:00
Stefanos Kornilios Mitsis Poiitidis c60fca4973 sh4: Cleanup SetFloatStatusReg a bit 2015-08-11 07:57:23 -04:00
Stefanos Kornilios Mitsis Poiitidis 26cfcd79e9 OSX: Fiddling to get the rec-cpp/noexcept path running 2015-08-11 07:57:22 -04:00
Stefanos Kornilios Mitsis Poiitidis e3845465f0 win64/jit: Generate unwind table for the jit code cache
This required moving the SH4_TCB outside the exe, as new tables that belong on the executable are ignored.
This isn't perfect, but there's a large area to scan for available address space so it shouldn't be a problem
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis e6a9d3e661 softrend: Resembling a pixel pipeline, textures, sort, cull
- Basic pixel pipeline, a bit better triangle tests, specialized render handlers
- Textures w/ point filtering. Not very smart is it goes 32 -> 16 -> 32 bpp, but works.
- The texture cache is shared rather inelegantly w/ OpenGL one
- Culling
- PParam sorting (shared w/ GL)

The texturing and color blending paths are ugly and slow
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis 8faef19c3f Apple: fix disabled nvmem blockmgr path, add printfs, clean xcode files 2015-08-10 03:02:59 +02:00
TwistedUmbrella bf75c95ae8 Update project for #755 and fix warnings 2015-08-17 07:59:39 -04:00
Stefanos Kornilios Mitsis Poiitidis f2f9a041e1 Merge pull request #727 from reicast/wip/import-drkpvr-softrend
rend/soft: Import the experimental core from nulldc/drkpvr, modularize
2015-08-05 04:25:06 +02:00
Stefanos Kornilios Mitsis Poiitidis 8cce1a4976 rend/soft: Import the experimental core from nulldc/drkpvr, better renderer modularization
- Adapted for indexed, async rendering, shared ta decoder
- This blits via a quick-and-hacky GDI blitter for now
- SSE/MMX intrins based, so not very portable
- A rather not good "reference" implementation
- At least, it's not terribly slow though
- GetTexture moved to Renderer interface
2015-08-05 02:43:40 +02:00
Stefanos Kornilios Mitsis Poiitidis 0343feffa6 Merge pull request #714 from reicast/wip/nacl-and-emscripten
NaCL & Emscripten targets

- CPU_GENERIC
- TARGET_NO_THREADS
- TARGET_NO_NIXPROF
- TARGET_NO_EXCEPTIONS
- TARGET_NO_NVMEM
- TARGET_BOUNDED_EXECUTION
- TARGET_NO_COREIO_HTTP
2015-08-03 11:28:29 +02:00
Stefanos Kornilios Mitsis Poiitidis 61394d7a44 shil: Disable external assembly implementations
Using external function pointers is broken after the rec-cpp structural changes,
and relatively low priority so disabled for now.

Fixes builds on arm, non-android (see #720)
2015-08-03 10:41:34 +02:00
Stefanos Kornilios Mitsis Poiitidis ac6bdddae3 Merge pull request #694 from randomstuff/cleanup
Minor Cleanup
2015-08-03 00:09:11 +02:00
Gabriel Corona 8c68f4a06b Fix a 'permissive' warning 2015-07-31 20:37:39 +02:00
Stefanos Kornilios Mitsis Poiitidis d8ccc9d2e7 emscripten: More rec-cpp progress
It almost builds now, except emscripten randomly gives up and crashes. No one likes my code these days...
2015-07-29 06:45:02 +02:00
Stefanos Kornilios Mitsis Poiitidis 0153145950 emscripten: Fix build 2015-07-29 06:22:59 +02:00
Stefanos Kornilios Mitsis Poiitidis 17a4af378c nacl: Post-merge cleanups 2015-07-29 04:58:41 +02:00
Stefanos Kornilios Mitsis Poiitidis 057b1075b6 ta/mt: add rend_framePending? for better mt sync from clients 2015-07-29 04:28:27 +02:00
~skmp 2d9fbdda40 nacl: Fix sqw_nommu to work w/ non-linear nvmem allocation 2015-07-29 04:27:32 +02:00
Stefanos Kornilios Mitsis Poiitidis b9bbb5c0c8 nacl: Work towards rec-cpp 2015-07-29 04:26:50 +02:00
~skmp 376a36bf57 Emscripten: Hacky support, can boot bios
- Add TARGET_BOUNDED_EXECUTION, TARGET_EMSCRIPTEN
- Add emscripten makefile

Of course, there's no jit at this point
2015-07-29 04:08:08 +02:00
~skmp a2831d67a0 vmem/alloc: TARGET_NO_NVMEM to not use page tricks
This combined with various other configs avoid segfault/pagefaults usage
2015-07-29 04:08:07 +02:00
~skmp 59c6012db2 pvr/rend_if: TARGET_NO_THREADS support 2015-07-29 04:08:06 +02:00
~skmp b1a55aba3f ta_parser: use uniform function signatures for Append* callbacks
- Fixes emscripten build & makes more sense overall
2015-07-29 04:08:03 +02:00
Stefanos Kornilios Mitsis Poiitidis 2347b95bf2 aica/sgc: fix update_rate warning 2015-07-29 03:26:58 +02:00
Stefanos Kornilios Mitsis Poiitidis 75fd698695 Merge pull request #701 from reicast/feat/rec-cpp
Initial implementation of a "dynarec-structured" cached shop interpreter
2015-07-29 02:43:51 +02:00
Stefanos Kornilios Mitsis Poiitidis a82f9704d6 shrec: Limit max blocksize to 511 shops 2015-07-29 02:29:16 +02:00
~skmp 5b67e3f090 rec-cpp: SH4_TCB doesn't need to be in .text if not executable 2015-07-29 02:28:39 +02:00
Stefanos Kornilios Mitsis Poiitidis 83d3abf266 maple: Gracefully fail if vmu cannot be written 2015-07-28 23:54:50 +02:00
Jan Holthuis 9e00305c90 Fix anonymous struct/union linkage errors in gdromv3.cpp
Since read_params, packet_cmd, read_buff, pio_buff, ata_cmd, cdda and
ByteCount have not been declared static, they are visible in other
translation units. Since their structs are anonymous, their types have
internal linkage only. Thus, accessing them in other translations units
is impossible anyway.

By declaring them static, we're giving it internal linkage so that
neither the type nor the variable are visible in other translation
units.

Here are the errors:

../../core/hw/gdrom/gdromv3.cpp:50:3: warning: anonymous type with no
linkage used to declare variable '<anonymous struct> read_params' with
linkage
 } read_params;
   ^
../../core/hw/gdrom/gdromv3.cpp:83:3: warning: anonymous type with no
linkage used to declare variable '<anonymous struct> packet_cmd' with
linkage
 } packet_cmd;
   ^
../../core/hw/gdrom/gdromv3.cpp:91:3: warning: anonymous type with no
linkage used to declare variable '<anonymous struct> read_buff' with
linkage
 } read_buff;
   ^
../../core/hw/gdrom/gdromv3.cpp💯3: warning: anonymous type with no
linkage used to declare variable '<anonymous struct> pio_buff' with
linkage
 } pio_buff;
   ^
../../core/hw/gdrom/gdromv3.cpp:106:3: warning: anonymous type with no
linkage used to declare variable '<anonymous struct> ata_cmd' with
linkage
 } ata_cmd;
   ^
../../core/hw/gdrom/gdromv3.cpp:122:3: warning: anonymous type with no
linkage used to declare variable '<anonymous struct> cdda' with linkage
 } cdda;
   ^
../../core/hw/gdrom/gdromv3.cpp:156:4: warning: anonymous type with no
linkage used to declare variable '<anonymous union> ByteCount' with
linkage
  } ByteCount;
    ^
2015-07-27 19:08:35 +02:00
Stefanos Kornilios Mitsis Poiitidis fb55e7f6f8 sh4/canonical: Provide impls for sync_sr and sync_fpscr
This shouldn't be a requirement as directly using shil_cf_ext should work,
but for some reason if I don't msvc optimizes the functions out.
2015-07-25 20:36:06 +02:00
Stefanos Kornilios Mitsis Poiitidis cbda836a96 she/core: Less stupid register swap functions 2015-07-25 20:33:53 +02:00
Stefanos Kornilios Mitsis Poiitidis b1f7015a98 rec/cpp: Mostly fully direct specialized dispatchers
- Nest shil implementations to shilop_##name::form::impl for easier template matching
- Add more direct handlers
- Add prints if a direct handler isn't found
- Remove multiple indirect handlers, leave them for fallback
2015-07-25 14:36:04 +02:00
Stefanos Kornilios Mitsis Poiitidis 51a6ed2146 rec/all: optional mips counter on recs
Also de-unroll rec-cpp for debug builds
2015-07-25 14:31:46 +02:00
Stefanos Kornilios Mitsis Poiitidis 39e369411c shil/canonical: Fix decls, comment 2015-07-25 14:23:45 +02:00
Stefanos Kornilios Mitsis Poiitidis 9cf9bacd13 build: Refactor HOST_NO_REC everywhere 2015-07-25 13:19:26 +02:00
Stefanos Kornilios Mitsis Poiitidis a9c76351f6 build: Draft & cleanup, refactor rec* options 2015-07-25 13:17:42 +02:00
Stefanos Kornilios Mitsis Poiitidis 67a8ceabdd shil/param: add imm_value() 2015-07-23 02:08:25 +02:00
Stefanos Kornilios Mitsis Poiitidis 19535cc34d vmem: Remove some useless/dead code 2015-07-21 16:04:22 +02:00
Stefanos Kornilios Mitsis Poiitidis e50cfe3010 x64 tinyjit: linux support 2015-07-14 03:35:34 +02:00
Stefanos Kornilios Mitsis Poiitidis 3852cf9ac8 Minimal x64 jit: Desync'd, but runs 2015-07-13 23:56:42 +02:00
Stefanos Kornilios Mitsis Poiitidis b385575d6f Get x64 building 2015-07-13 21:13:51 +02:00
Stefanos Kornilios Mitsis Poiitidis 852672a2dc Merge pull request #667 from Holzhaus/fix-bug-660
sh4_opcodes: Fix printf arguments
2015-07-05 11:45:58 -07:00
TwistedUmbrella e3744446f5 Support return to external launcher, Prep for linux
This adds the ability to simply close the emulator when launched
externally and prevents changes designed for linux from generating
conflicting controller configurations on Android (and may be needed for
iOS as well).
2015-06-28 11:29:34 -04:00
Jan Holthuis fb50c7570c sh4_opcodes: Fix printf arguments
This partly resolves #660 (needs to applied to linux-64 branch, too).
2015-06-13 16:55:12 +02:00
TwistedUmbrella 97569a9f24 too many arguments to function 'void armv_end(void*)' 2015-05-23 12:25:14 -04:00
Stefanos Kornilios Mitsis Poiitidis a9fc0f5aa8 Merge pull request #655 from reicast/feat/segfault-context-consolidation
ios merge, segfault context consolidation, linux86, android x86 jit
2015-05-18 14:56:55 +02:00
Stefanos Kornilios Mitsis Poiitidis f571d6c594 pvr/vram: Bank bit seems to be fixed on 4M, even on 16M hardware 2015-05-18 14:45:24 +02:00
Stefanos Kornilios Mitsis Poiitidis 2d842b9257 Renderer_if: fix norend 2015-05-16 01:10:47 -07:00
Stefanos Kornilios Mitsis Poiitidis 9c2a4dc5a4 iOS fixes 2015-05-16 01:04:30 -07:00
Stefanos Kornilios Mitsis Poiitidis 6547d80095 Fixes for android, cleanup context.cpp 2015-05-16 08:18:46 +02:00
Stefanos Kornilios Mitsis Poiitidis 65ca1382d8 Merge remote-tracking branch 'remotes/origin/skmp/ios-wip' into feat/segfault-context-consolidation
Android/windows builds fine again. Android not tested yet, iOS/OSX not compiled yet
2015-05-16 07:12:19 +02:00
Stefanos Kornilios Mitsis Poiitidis 8c469e4b5c *nix: move context massaging to linux/context.cpp, ALIGN -> DECL_ALIGN
Yay some warnings gone from not conflicting with ALIGN anymore
2015-05-16 03:06:04 +02:00
Stefanos Kornilios Mitsis Poiitidis 5b609a6be4 linux: Sh4 dynarec works 2015-05-08 18:59:20 +02:00
Stefanos Kornilios Mitsis Poiitidis d33ad6edfb Updating from linux/x64 2015-05-08 17:49:23 +02:00
Stefanos Kornilios Mitsis Poiitidis 5ef9d661a6 Merge remote-tracking branch 'origin/master' into skmp/linux86 2015-05-08 17:29:14 +02:00
Stefanos Kornilios Mitsis Poiitidis 5d3c71bee7 Merge master 2015-05-08 17:29:06 +02:00
Stefanos Kornilios Mitsis Poiitidis 3fe8f0eb94 tmu: Correctly schedule next interrupt in underflow, correctly differentiate between large values and underflows
- 32 bit code was "fudgy" on this, so simplified via 64bit counters for edge detection
- Maths to count cycles were wrong
- Let's not do 32 bit wrapped maths after beers without any kind of pen-and-paper design

Should fix #594, also see #645
2015-05-08 02:29:24 +02:00
Stefanos Kornilios Mitsis Poiitidis c25ce04b48 sh4_sched: Avoid scheduling to -1, because, magic values. 2015-05-07 22:10:00 +02:00
Stefanos Kornilios Mitsis Poiitidis 4b46de89bb sh4_sched: Handle disabled events correctly 2015-05-07 22:03:55 +02:00
Stefanos Kornilios Mitsis Poiitidis 20f7a41fe9 sched: Do not re-fire expired callbacks, use sh4_sched_remaing on sh4_sched_tick 2015-05-07 21:33:36 +02:00
Stefanos Kornilios Mitsis Poiitidis 0c04adba67 reios: Add support for elf booting 2015-03-22 01:30:19 +01:00
Stefanos Kornilios Mitsis Poiitidis 3b1c38ad55 sh4/driver: don't log on div32 missmatch 2015-03-22 01:26:43 +01:00
Stefanos Kornilios Mitsis Poiitidis cca8558d08 Add Serial Console option (debug.SerialConsoleEnable) for KOS, etc 2015-02-25 20:56:58 +01:00
Stefanos Kornilios Mitsis Poiitidis 9ed6945826 sh4/cpu_iNimp: Nicer error output 2015-02-25 19:31:33 +01:00
Stefanos Kornilios Mitsis Poiitidis ae8ce5ad23 sh4/rdv_CompilePC: Fix boot time automatic cache flushes
The bios boots from 0xA... addresses, not 0x8... so the flushes were never triggered
2015-02-25 19:30:08 +01:00
Stefanos Kornilios Mitsis Poiitidis 7c64d57b35 Merge branch 'master' into skmp/bios-hle 2015-02-25 15:21:59 +01:00
Stefanos Kornilios Mitsis Poiitidis f2c07917c7 Partially working dyna for iOS. Very few games working atm.
This works, but is extremelly hacky. Must be started without attached debugger, lldb doesn't want to let go of EXC_BAD_ADDRESS, but reicast really depends on it getting delivered as SIGSEGV/SIGBUS. Also xcode has a really bad day upon seeing the jit code. Oh well.

There's some dynarec bug that causes color corruption on bios logo/boot triagles, TA crash on ikaruga and infinitive loop on crazy taxi. I'd guess some fp-memory-write thingy, abi, or smth. Too bad.

- Force code to compile in arm mode (arm jit -> thumb mem functions is complicated)
- SIGILL, SIGBUS. Works w/o Mach exceptions and EXC_BAD_ADDRESS
- Code buffers move to __TEXT, munmapped && memmapped to actually work
- Primitive input. Button + start, or left (works to get out of bios date screen)
- Fixup emitter for thumb2/interworking (didn't work though, reverted to arm cc)
- Block Manager: Disable mem saving / page fault alloc-on-demand logic
- Move cycle counter to r11, r9 is not clean on iOS. Remove r11 from reg alloc list
- Cache flushes for iOS
- log to log.txt
- load game.chd
2015-01-18 23:52:12 -08:00
Stefanos Kornilios Mitsis Poiitidis 4a917a003e Merge branch 'master' of github.com:reicast/reicast-emulator 2015-01-16 21:38:09 +01:00
Stefanos Kornilios Mitsis Poiitidis 977dff25ab Basic support for recording frames 2015-01-16 21:37:30 +01:00
Stefanos Kornilios Mitsis Poiitidis d9d9b76d79 TA/VTX: Reset current list on vdec_init
Fixes some rare cases where it's invalid or left over to some list, without a CurrentList set, leading to crash.
2015-01-15 14:23:56 +01:00
~skmp 33556f3863 64 bit fixes 2015-01-10 21:15:15 +02:00
Stefanos Kornilios Mitsis Poiitidis d055dbd7cb TMU: Also set the underflow flag. Fixes KOS. 2015-01-07 03:12:33 +02:00
Stefanos Kornilios Mitsis Poiitidis 6ad25b8f53 TMU: Improve interrupt handling 2015-01-06 21:50:00 +02:00
Stefanos Kornilios Mitsis Poiitidis 11e9ed167a Fix building for android 2015-01-06 16:07:18 +02:00
Stefanos Kornilios Mitsis Poiitidis 605fa1c40a TMU: Hello interrupts
Let's pretend that the TMU unit actually exists, it makes games like
Gaunlet Legends happy ~
2015-01-06 15:00:39 +02:00
Stefanos Kornilios Mitsis Poiitidis c5cc2f1e50 Document sh4_shced, fix tmu a bit 2015-01-06 14:10:48 +02:00
Stefanos Kornilios Mitsis Poiitidis 25eee26ce5 First steps towards a HLE bios implementation
This is very simplistic, but can already boot and run many games

Known working so far
- Dead Or Alive 2 LE
- Head Hunter
- Marvel VS Capcom 2

Not working
- (Almost) all others
2014-12-29 22:05:35 +01:00
Stefanos Kornilios Mitsis Poiitidis 5b9ac040a4 FB_R_SIZE_type should be 32 bits, not 42 2014-12-22 16:45:32 +01:00
Stefanos Kornilios Mitsis Poiitidis 56ebda10a9 ios interpreter works, bios runs w/ 3d visulals
THIS IS A MESS. Sorry @angelXwind :p. We'll have to clean up and merge for r8, but most of the nasty work is there.

What works:
- full init, memalloc, mprotects, etc
- boot
- gles2

What doesn't:
- Exceptions for page faults
  - Breaks texture cache
  - Breaks dynarec because of fastpath
  - segfaults don't work, needs special mach exc_server magic that still eludes me after 5 hours
- Dynarecs. RWX issues, and broken buffer mappings. Also some minnor linking stuff (most of it is taken care of)
- Audio. I just killed it off.
- All of the ui. Was getting in the way of me not knowing how to edit story boards...
- Input

Also, merged branch 'skmp/mac86-hackport' into skmp/ios-wip

Have fun~
2014-12-17 10:19:44 -08:00
Stefanos Kornilios Mitsis Poiitidis 2978074fa6 Merge branch 'master' of https://github.com/reicast/reicast-emulator 2014-12-17 03:11:14 -08:00
Stefanos Kornilios Mitsis Poiitidis 86e2408ace wip to get ios compiling 2014-12-17 03:10:18 -08:00
Stefanos Kornilios Mitsis Poiitidis 160d6f0c48 Linux is case sensitive 2014-12-17 10:44:11 +01:00
Stefanos Kornilios Mitsis Poiitidis 29906d8416 Texkill, palette_update on correct place.
- Texkill needs to be done before texture allocation, which is now done during parsing (texture-sync update)
- palette_update needs to be called from the emu thread, before kicking off the render
2014-12-17 08:42:28 +01:00
Stefanos Kornilios Mitsis Poiitidis 9a5c3160a3 Documentation for dsp.cpp 2014-12-17 07:12:08 +01:00
Stefanos Kornilios Mitsis Poiitidis e43271e448 fix for msvc 2013 / C++14. Rend is now used by stdlib 2014-12-17 06:48:45 +01:00
Stefanos Kornilios Mitsis Poiitidis b1f88f258b Merge branch 'master' of github.com:reicast/reicast-emulator 2014-12-11 14:02:43 +01:00
Stefanos Kornilios Mitsis Poiitidis 34bc42b7a4 Add x64 target, fix Sh4RCB pointer sizing, u32->unat in vmem 2014-12-11 14:02:10 +01:00
Stefanos Kornilios Mitsis Poiitidis 2f171e3596 Support HOST_NO_REC for windows 2014-12-11 13:59:31 +01:00
Stefanos Kornilios Mitsis Poiitidis 22e95de2d1 Merge pull request #572 from reicast/skmp/pandora-merge
pandora merge
2014-12-11 03:26:13 +01:00
Stefanos Kornilios Mitsis Poiitidis 4500cfb1d3 Remove white-space changes 2014-12-11 02:57:23 +01:00
Stefanos Kornilios Mitsis Poiitidis 63485e7a72 SetFloatStatusReg: support gcc for x86 2014-12-09 22:15:44 +01:00
Stefanos Kornilios Mitsis Poiitidis 77390f861e DSP only if HOST_NO_REC is not enabled 2014-12-09 22:15:00 +01:00
Stefanos Kornilios Mitsis Poiitids f14932c362 Building on osx w/o rec or rend 2014-09-30 12:00:46 +03:00
Stefanos Kornilios Mitsis Poiitidis 4f3cee2d87 Improve async/mt rendering & sync logic.
Should fix texture staging issues for now, without degrading performance
Fixes #49 (mvsc2, sf3, etc sprites)
2014-08-18 22:39:21 +02:00