Commit Graph
31 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 961726dc88 VFPU: vrnds takes its seed from the vs field
The toolchain encodes vrnds's operand in vs and leaves vd zero, so we
always seeded from S000. Resistance: Retribution reseeds per particle
from S620, which made every particle in its smoke and explosions take
new random values each frame. They flickered, and some never drew.

Hardware test: cpu/vfpu/vrnd (vs and vd fields).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 00:09:25 +02:00
Henrik RydgårdandClaude Opus 5.5 124f86d7d0 VFPU: Decode prefixes with shared helpers
The prefix fields were decoded by hand in the interpreter, the IR frontend,
JitState, MIPSState and the disassembler, with three copies of the constant
table. They now share small decoders and one table, in MIPS.h. The backends'
Vec4Shuffle lane decoding gets a helper of its own in IRInst.h.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:34:05 +02:00
Thomas Lamb bf67ed300d Fix assembly/disassembly for various VFPU opcodes
Update armips for VFPU instruction parsing changes (Kingcom/armips#257)
- fix transposed matrix register encodings (e.g. `vmidt.p E220` was assembling to `vmidt.p E202`)
- fix immediate size for `vwbn.s` (is 8 bits, was limited to 5 bits)
- fix `vd` register size for `vsocp.s/p`
- fix `vhtfm2.p` and `vhtfm3.t` encoding
- add missing instruction `vhtfm4.q`

Fix `v(h)tfmX` disassembly (handle irregular vector size encoding)

Fix `vsocp.s/p` disassembly (`vd` is double the size of `vs`)
2026-08-11 10:10:56 -04:00
Thomas Lamb d1656d425a Improve debugger assemble/disassemble compatiblity
Update armips for VFPU instruction parsing changes:
- Kingcom/armips#255
- Kingcom/armips#256

Remove brackets from VFPU instruction `vpfx*` params

Rename VFPU instruction `vuc2i.s` to `vuc2ifs.s`

Add brackets to VFPU instruction `vpfxd` saturation operations (i.e. [0:1] & [-1:1])

Rename FPU instructions `c.$OP` to `c.$OP.s`

Fix VFPU instruction `vuc2ifs.s` `vd` size in disassembly

Replace `CC[imm3]` with `imm3` in VFPU instructions `vcmov*` & `bv*` disassembly
2026-07-07 20:30:51 -04:00
Henrik Rydgård 3e198c53b2 More include cleanup 2024-12-18 13:57:26 +01:00
Henrik Rydgård e3177ac870 Make some global string pointers const, not just the strings.
Minor cleanup.
2023-12-29 14:09:45 +01:00
Henrik Rydgård 1ef1478cc8 Remove more impossibilities (GetMtxSize) 2023-06-04 11:48:43 +02:00
Henrik Rydgård a92cca2575 Don't check for impossibilities. Minor speedup for GetVecSize. 2023-06-04 11:28:39 +02:00
Unknown W. Brackets 5b1235537f Debugger: Make disasm more thread safe. 2023-04-29 09:56:17 -07:00
Unknown W. Brackets 6da10463f9 Debugger: Make reg names safer, stop using v000.
Better to use S000, etc. as that's more clear throughout.
2023-04-29 09:48:33 -07:00
Unknown W. Brackets 46101581c0 Core: Cleanup disasm buffer usage. 2023-04-29 09:07:25 -07:00
Unknown W. Brackets 1fc74b1980 Debugger: Format vfpu offsets as hex.
Let's be consistent across FP and VFPU, it's confusing otherwise.
2023-04-09 10:44:19 -07:00
Unknown W. Brackets f6640cf5e5 Debugger: Fix viim disassembly. 2023-04-09 10:36:51 -07:00
Unknown W. Brackets 5233a3bc84 Debugger: Cleanup some sign extends in disassembly. 2023-04-09 10:36:20 -07:00
kotcrab 7a124d84ae Fix disassembly of vcst 2021-09-25 19:34:41 +02:00
kotcrab 4bdba8ae6f Fix disassembly of vmfvc and vmtvc 2021-09-25 16:33:07 +02:00
kotcrab b7a64750ed Fix vcrs disassembly 2019-10-30 22:35:13 +01:00
Unknown W. Brackets 22940f0393 Debugger: Avoid asserts in disassembly. 2018-06-08 06:59:18 -07:00
Kingcom 6b29fe9d60 Change VROT disassembly 2014-11-29 18:33:33 +01:00
Kingcom 479c8646a2 Change vpfxs/r/t disassembly syntax 2014-11-12 00:09:57 +01:00
Unknown W. Brackets 737c96eced More cstring includes, grr. 2014-03-15 12:03:33 -07:00
lioncash b9886942a7 Fix some vertical alignments in misc Core source files. 2014-03-03 11:16:53 -05:00
Unknown W. Brackets a69ddf840c Fix some formatting warnings. 2013-12-01 11:21:15 -08:00
Unknown W. Brackets ec05146ffd Improve vfpu disasm for a few instructions. 2013-11-29 10:07:15 -08:00
Unknown W. Brackets 109ad17ac6 Use a typesafe struct for opcodes.
Also, correctly read delayslots using Read_Instruction on ARM.
2013-08-24 15:36:24 -07:00
Henrik Rydgard a385ec6056 MIPSDis cleanup, allow mfv zero, 255 (appears to be used to flush VFPU state or something) 2012-11-23 10:35:28 +01:00
Henrik Rydgard 772b599041 Resurrect vmfvc/vmtvc, they are different from mfvc/mtvc 2012-11-22 22:30:44 +01:00
Henrik Rydgard 232b84cd10 Assorted FPU/VFPU fixes, after adding more tests. 2012-11-22 18:13:48 +01:00
Henrik Rydgard d572d40c36 More warning fixing 2012-11-18 23:35:02 +01:00
Henrik Rydgard 64cc573703 Switch to "GPL 2.0 or later" for various reasons. I wrote most of the code I imported from Dolphin (which is GPL2-but-not-later), so it should be OK. 2012-11-04 23:24:00 +01:00
Henrik Rydgard 4f7ad15758 Add snapshot of the whole source code. 2012-11-01 16:19:01 +01:00