Commit graph

1733 commits

Author SHA1 Message Date
Paul Holden
cbacf12507 Log values in hex. 2023-09-23 22:17:54 +01:00
Paul Holden
87415a8653 Log values in hex. 2023-09-23 22:17:54 +01:00
Paul Holden
c724e7c1f0 Avoid out of bounds array access in executeGBI1_Line3D.
It looks like the stride is off, but I'm not sure how.
2023-09-23 22:17:54 +01:00
Paul Holden
2bdf3b2480 Implement f64UnaryOp using a lookup table. 2023-09-23 22:17:54 +01:00
Paul Holden
8471247c90 Remove overflow checks. 2023-09-23 22:17:54 +01:00
Paul Holden
56c1bdd8d1 Add support for logging ISViewer debug output.
Don't throw on writes to d1a2.
2023-09-23 22:17:54 +01:00
Paul Holden
b34248a509 Improve rom.js logging - take read/write size into account. 2023-09-23 22:17:54 +01:00
Paul Holden
86817ff66a Implement f32UnaryOp using lookup tables. 2023-09-23 22:17:54 +01:00
Paul Holden
d64e1bf96a Refactor fXXUnaryOp like fXXBinaryOp. 2023-09-23 22:17:54 +01:00
Paul Holden
1dcc85fd62 Move underflow rounding to a lookup table. 2023-09-23 22:17:54 +01:00
Paul Holden
ac2e0e4ba5 Rename classify functions. 2023-09-23 22:17:54 +01:00
Paul Holden
53698bee25 Dedupe the weird exception handling around underflows. 2023-09-23 22:17:54 +01:00
Paul Holden
aa31a6ae58 Improve exception handling for ADD/SUB/MUL/DIV .D. 2023-09-23 22:17:54 +01:00
Paul Holden
fce714fc13 Tidy f32BinaryOp. 2023-09-23 22:17:54 +01:00
Paul Holden
8d30353093 Implement overflow check by just checking if finite values produced infinity. 2023-09-23 22:17:54 +01:00
Paul Holden
d54644adfe More ADD/SUB/MUL/DIV improvements for single precision.
95% (286/300) of the ADD/SUB/MUL/DIV.S tests from n64-systemtest pass now.
2023-09-23 22:17:54 +01:00
Paul Holden
6c4af2e350 Handle DIV.S cases using a lookup table. 2023-09-23 22:17:54 +01:00
Paul Holden
9b8d4a1d0a Improve DIV handling. 2023-09-23 22:17:54 +01:00
Paul Holden
d086296b1a Improve ADD/SUB/MUL/DIV handling. 2023-09-23 22:17:54 +01:00
Paul Holden
cfc0300a9c Create stubs for binary ops in cpu1.js. 2023-09-23 22:17:54 +01:00
Paul Holden
fc1f5ab9f6 Improve handling of unary ops (SQRT, NEG, ABS). 2023-09-23 22:17:54 +01:00
Paul Holden
61dcabace3 Don't import convertModeDefault. 2023-09-23 22:17:54 +01:00
Paul Holden
d714624fc4 Get rid of convertModeDefault. 2023-09-23 22:17:54 +01:00
Paul Holden
9ff9eff76d Improve rounding. 2023-09-23 22:17:54 +01:00
Paul Holden
d0323b2dc4 Improve CVT.D.L and CVT.S.L to raise unimplemented for values that are too large. 2023-09-23 22:17:54 +01:00
Paul Holden
c3f7e0692b Fix some constant names. 2023-09-23 22:17:54 +01:00
Paul Holden
f6c4ee0b07 Improve cop1 accuracy. 2023-09-23 22:17:54 +01:00
Paul Holden
2fa46f5fcb Don't log html elements to the console. 2023-09-23 22:17:54 +01:00
Paul Holden
6a2683f458 Add some constants for cop1 ops. 2023-09-23 22:17:54 +01:00
Paul Holden
4c3782ee7f Implement correct NaN handling for cop1 CMP. 2023-09-23 22:17:54 +01:00
Paul Holden
fa93414e59 Express constants as value << shift. 2023-09-23 22:17:54 +01:00
Paul Holden
5eb7ca5928 Remove logging for switching betwee 32<->64 modes. 2023-09-23 22:17:54 +01:00
Paul Holden
e00e29bcab Implement MOV.{S,D} using ints.
Without this JS runtime seems to convert SNaNs to QNaNs.
2023-09-23 22:17:54 +01:00
Paul Holden
8f6d200eba Give a hint about cop2/cop3 instructions in the disassembly. 2023-09-23 22:17:54 +01:00
Paul Holden
b46047dd7a Implement trap instructions. 2023-09-23 22:17:54 +01:00
Paul Holden
d3cd86f733 Rename throw -> raise. 2023-09-23 22:17:54 +01:00
Paul Holden
9cc6c7a7e9 Fix handleInterrupt. 2023-09-23 22:17:54 +01:00
Paul Holden
af5206c850 Implement RESERVED. 2023-09-23 22:17:54 +01:00
Paul Holden
81ed7fb3cd Delete some debug logging. 2023-09-23 22:17:54 +01:00
Paul Holden
d3375cea59 Implement SYSCALL and BREAK. 2023-09-23 22:17:54 +01:00
Paul Holden
3d72315ddd Remove some noisy logging. 2023-09-23 22:17:54 +01:00
Paul Holden
16aa48c841 Add support for some identity CVT instructions. 2023-09-23 22:17:54 +01:00
Paul Holden
0c7461a38f Generate cop unusable exceptions for cop2 and cop3. 2023-09-23 22:17:54 +01:00
Paul Holden
52927c82f2 Throw an exception if CTC1 is called without cop1 usable.
Generalise checkCopXUsable.
2023-09-23 22:17:54 +01:00
Paul Holden
41f598042d Mask unwritable bits of the status register. 2023-09-23 22:17:54 +01:00
Paul Holden
7376cf3c2a Add disassembly for DMFC0 and DMTC0. 2023-09-23 22:17:54 +01:00
Paul Holden
b72cf34d08 Rename controlSR to controlStatus. 2023-09-23 22:17:54 +01:00
Paul Holden
b7fb59d6f8 Remove logging for read-only control registers. 2023-09-23 22:17:54 +01:00
Paul Holden
91b514f828 Stop logging context register writes. 2023-09-23 22:17:54 +01:00
Paul Holden
7af3113b60 Partially implement XContext masking. 2023-09-23 22:17:54 +01:00