Commit graph

1886 commits

Author SHA1 Message Date
Paul Holden
5a0dbce690 Move specialTableGen next to specialTable. 2023-07-18 09:09:34 +01:00
Paul Holden
bdd8abc039 Removing noisy 'cop1 unusable' logging. 2023-07-18 09:06:32 +01:00
Paul Holden
4b7e4744af DCFC1 and DCTC1 generate unimplemented FP exception. 2023-07-18 08:56:50 +01:00
Paul Holden
5377c9e1ac Throw cop1 unusable for LWC1/LDC1/SWC1/SDC1. 2023-07-18 08:45:15 +01:00
Paul Holden
1ea84b3dc5 Tidy CTC1 - cop1 usable check is done via executeCop1_disabled. 2023-07-18 08:43:39 +01:00
Paul Holden
dbfd859e38 Log values in hex. 2023-07-17 23:47:29 +01:00
Paul Holden
305c3767ff Log values in hex. 2023-07-17 23:46:43 +01:00
Paul Holden
304b6b7b9c Avoid out of bounds array access in executeGBI1_Line3D.
It looks like the stride is off, but I'm not sure how.
2023-07-17 23:39:30 +01:00
Paul Holden
d5abc5c044 Implement f64UnaryOp using a lookup table. 2023-07-17 23:31:08 +01:00
Paul Holden
f4e18ada7f Remove overflow checks. 2023-07-17 23:30:08 +01:00
Paul Holden
4ceddaad56 Add support for logging ISViewer debug output.
Don't throw on writes to d1a2.
2023-07-17 23:24:22 +01:00
Paul Holden
2ce95c9ea3 Improve rom.js logging - take read/write size into account. 2023-07-17 22:54:00 +01:00
Paul Holden
7b2ec6487c Implement f32UnaryOp using lookup tables. 2023-07-17 20:22:56 +01:00
Paul Holden
63e58953bc Refactor fXXUnaryOp like fXXBinaryOp. 2023-07-17 19:17:05 +01:00
Paul Holden
65eb0d0218 Move underflow rounding to a lookup table. 2023-07-17 19:03:54 +01:00
Paul Holden
eee8df9b06 Rename classify functions. 2023-07-17 09:28:43 +01:00
Paul Holden
d36cf94043 Dedupe the weird exception handling around underflows. 2023-07-17 09:26:23 +01:00
Paul Holden
f56bc2a2e9 Improve exception handling for ADD/SUB/MUL/DIV .D. 2023-07-17 09:19:43 +01:00
Paul Holden
f8ae23d9a8 Tidy f32BinaryOp. 2023-07-17 09:19:00 +01:00
Paul Holden
3192c9399b Implement overflow check by just checking if finite values produced infinity. 2023-07-17 09:18:21 +01:00
Paul Holden
b22d4669b3 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-07-16 23:28:00 +01:00
Paul Holden
e01bd88aae Handle DIV.S cases using a lookup table. 2023-07-16 15:12:40 +01:00
Paul Holden
d30b474405 Improve DIV handling. 2023-07-15 22:32:27 +01:00
Paul Holden
c7319b5f5a Improve ADD/SUB/MUL/DIV handling. 2023-07-15 22:05:19 +01:00
Paul Holden
c89785fdc2 Create stubs for binary ops in cpu1.js. 2023-07-15 21:36:46 +01:00
Paul Holden
43d7150f1c Improve handling of unary ops (SQRT, NEG, ABS). 2023-07-15 21:30:14 +01:00
Paul Holden
09dc15c3ee Don't import convertModeDefault. 2023-07-15 21:27:35 +01:00
Paul Holden
073724f083 Get rid of convertModeDefault. 2023-07-15 20:58:58 +01:00
Paul Holden
354969dcb6 Improve rounding. 2023-07-15 20:50:34 +01:00
Paul Holden
55b98fc63f Improve CVT.D.L and CVT.S.L to raise unimplemented for values that are too large. 2023-07-15 20:32:49 +01:00
Paul Holden
fce422f502 Fix some constant names. 2023-07-15 20:11:43 +01:00
Paul Holden
b7a9949c11 Improve cop1 accuracy. 2023-07-15 20:11:08 +01:00
Paul Holden
d03d9cb2d7 Don't log html elements to the console. 2023-07-15 09:50:40 +01:00
Paul Holden
717a7915e6 Add some constants for cop1 ops. 2023-07-15 09:48:33 +01:00
Paul Holden
5f82f7aec0 Implement correct NaN handling for cop1 CMP. 2023-07-15 09:13:39 +01:00
Paul Holden
dd34746a7d Express constants as value << shift. 2023-07-15 08:59:52 +01:00
Paul Holden
30e8db70d8 Remove logging for switching betwee 32<->64 modes. 2023-07-14 21:56:44 +01:00
Paul Holden
1e3d8c7540 Implement MOV.{S,D} using ints.
Without this JS runtime seems to convert SNaNs to QNaNs.
2023-07-14 21:54:43 +01:00
Paul Holden
48ef733a55 Give a hint about cop2/cop3 instructions in the disassembly. 2023-07-14 00:13:53 +01:00
Paul Holden
3d10e42079 Implement trap instructions. 2023-07-14 00:10:06 +01:00
Paul Holden
8ddbbc5455 Rename throw -> raise. 2023-07-14 00:09:20 +01:00
Paul Holden
000c8dffcc Fix handleInterrupt. 2023-07-13 23:36:49 +01:00
Paul Holden
d8a2cefd2d Implement RESERVED. 2023-07-13 23:16:58 +01:00
Paul Holden
71f05736b9 Delete some debug logging. 2023-07-13 23:03:57 +01:00
Paul Holden
3d6927e881 Implement SYSCALL and BREAK. 2023-07-13 23:02:07 +01:00
Paul Holden
aa7ae774e2 Remove some noisy logging. 2023-07-13 22:25:19 +01:00
Paul Holden
8473048ca3 Add support for some identity CVT instructions. 2023-07-13 22:21:53 +01:00
Paul Holden
0e2fefa7de Generate cop unusable exceptions for cop2 and cop3. 2023-07-13 22:20:14 +01:00
Paul Holden
7caa2ac3f4 Throw an exception if CTC1 is called without cop1 usable.
Generalise checkCopXUsable.
2023-07-13 22:15:17 +01:00
Paul Holden
8668555bef Mask unwritable bits of the status register. 2023-07-12 23:20:03 +01:00