@pkmn/engine 0.1.0-dev.53787794 → 0.1.0-dev.54a1aa85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +5 -4
  2. package/build/pkg/addon/browser.d.ts +1 -1
  3. package/build/pkg/addon/browser.js +2 -1
  4. package/build/pkg/addon/browser.js.map +1 -1
  5. package/build/pkg/addon/node.js +2 -1
  6. package/build/pkg/addon/node.js.map +1 -1
  7. package/build/pkg/addon/wasm.d.ts +2 -0
  8. package/build/pkg/addon/wasm.js +44 -0
  9. package/build/pkg/addon/wasm.js.map +1 -0
  10. package/build/pkg/addon.d.ts +23 -3
  11. package/build/pkg/addon.js +8 -17
  12. package/build/pkg/addon.js.map +1 -1
  13. package/build/pkg/data/layout.json +15 -2
  14. package/build/pkg/data/protocol.json +23 -9
  15. package/build/pkg/gen1.d.ts +13 -17
  16. package/build/pkg/gen1.js +6 -10
  17. package/build/pkg/gen1.js.map +1 -1
  18. package/build/pkg/index.d.ts +35 -100
  19. package/build/pkg/index.js +6 -68
  20. package/build/pkg/index.js.map +1 -1
  21. package/build/tools/debug.js +2 -2
  22. package/build/tools/debug.js.map +1 -1
  23. package/build/tools/display/debug.jsx +21 -8
  24. package/build/tools/display/debug.jsx.map +1 -1
  25. package/build/tools/display/index.js +17 -8
  26. package/build/tools/display/index.js.map +1 -1
  27. package/build/tools/display/ui.jsx +7 -7
  28. package/build/tools/display/ui.jsx.map +1 -1
  29. package/build.zig +112 -68
  30. package/package.json +24 -16
  31. package/src/bin/install-pkmn-engine +1 -1
  32. package/src/lib/common/debug.zig +11 -6
  33. package/src/lib/common/options.zig +2 -0
  34. package/src/lib/common/protocol.zig +4 -8
  35. package/src/lib/common/rational.zig +7 -5
  36. package/src/lib/common/rng.zig +1 -3
  37. package/src/lib/gen1/calc.zig +96 -98
  38. package/src/lib/gen1/chance.zig +37 -21
  39. package/src/lib/gen1/data/moves.zig +2 -4
  40. package/src/lib/gen1/data/species.zig +1 -3
  41. package/src/lib/gen1/data/types.zig +1 -2
  42. package/src/lib/gen1/data.zig +7 -11
  43. package/src/lib/gen1/helpers.zig +5 -18
  44. package/src/lib/gen1/mechanics.zig +108 -90
  45. package/src/lib/gen2/calc.zig +9 -17
  46. package/src/lib/gen2/data/items.zig +1 -3
  47. package/src/lib/gen2/data/moves.zig +2 -4
  48. package/src/lib/gen2/data/species.zig +1 -3
  49. package/src/lib/gen2/data/types.zig +1 -2
  50. package/src/lib/gen2/data.zig +11 -15
  51. package/src/lib/gen2/generated.zig +18 -23
  52. package/src/lib/gen2/helpers.zig +5 -12
  53. package/src/lib/gen2/mechanics.zig +41 -38
  54. package/src/lib/node.zig +2 -4
  55. package/src/lib/pkmn.zig +4 -0
  56. package/src/lib/wasm.zig +36 -1
  57. package/src/tools/display/ui.css +12 -9
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/display/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/display/index.ts"],"names":[],"mappings":"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"}
@@ -159,9 +159,9 @@ const Pokemon = ({ pokemon, battle, active, gen, showdown, last }) => {
159
159
  }
160
160
  const boosts = active ? <div className='boosts'>
161
161
  {!!pokemon.boosts.accuracy &&
162
- <div><strong>Accuracy:</strong><exports.Boost value={pokemon.boosts.accuracy}/></div>}
162
+ <div><strong>Accuracy:</strong> <exports.Boost value={pokemon.boosts.accuracy}/></div>}
163
163
  {!!pokemon.boosts.evasion &&
164
- <div><strong>Evasion:</strong><exports.Boost value={pokemon.boosts.evasion}/></div>}
164
+ <div><strong>Evasion:</strong> <exports.Boost value={pokemon.boosts.evasion}/></div>}
165
165
  </div> : '';
166
166
  const lis = [];
167
167
  const moves = active ? pokemon.moves : pokemon.stored.moves;
@@ -272,16 +272,16 @@ const Status = ({ pokemon }) => {
272
272
  exports.Status = Status;
273
273
  const Stat = ({ value, boost }) => {
274
274
  if (!boost)
275
- return value.toString();
275
+ return <span className='stat'>{value}</span>;
276
276
  if (boost > 0)
277
- return <span className='good'>{value} (+{boost})</span>;
278
- return <span className='bad'>{value} ({boost})</span>;
277
+ return <span className='stat good'>{value}&nbsp;(+{boost})</span>;
278
+ return <span className='stat bad'>{value}&nbsp;({boost})</span>;
279
279
  };
280
280
  exports.Stat = Stat;
281
281
  const Boost = ({ value }) => {
282
282
  if (value > 0)
283
- return <span className='good'>+{value}</span>;
284
- return <span className='bad'>{value}</span>;
283
+ return <span className='boost good'>+{value}</span>;
284
+ return <span className='boost bad'>{value}</span>;
285
285
  };
286
286
  exports.Boost = Boost;
287
287
  const PokemonIcon = ({ pokemon, side }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ui.jsx","sourceRoot":"","sources":["../../../src/tools/display/ui.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.jsx","sourceRoot":"","sources":["../../../src/tools/display/ui.tsx"],"names":[],"mappings":"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"}
package/build.zig CHANGED
@@ -1,5 +1,5 @@
1
- const std = @import("std");
2
1
  const builtin = @import("builtin");
2
+ const std = @import("std");
3
3
 
4
4
  pub const Options = struct {
5
5
  showdown: ?bool = null,
@@ -73,6 +73,7 @@ pub fn build(b: *std.Build) !void {
73
73
  const log = b.option(bool, "log", "Enable protocol message logging") orelse false;
74
74
  const chance = b.option(bool, "chance", "Enable update probability tracking") orelse false;
75
75
  const calc = b.option(bool, "calc", "Enable damage calculator support") orelse false;
76
+ const extra = b.option([]const []const u8, "option", "Enable extra option");
76
77
 
77
78
  const options = b.addOptions();
78
79
  options.addOption(?bool, "showdown", showdown);
@@ -80,6 +81,23 @@ pub fn build(b: *std.Build) !void {
80
81
  options.addOption(?bool, "chance", chance);
81
82
  options.addOption(?bool, "calc", calc);
82
83
 
84
+ if (extra) |opts| {
85
+ for (opts) |opt| {
86
+ if (std.mem.indexOfScalar(u8, opt, '=')) |i| {
87
+ options.addOption(?bool, opt[0..i], if (std.mem.eql(u8, opt[i + 1 ..], "true"))
88
+ true
89
+ else if (std.mem.eql(u8, opt[i + 1 ..], "false"))
90
+ false
91
+ else {
92
+ std.log.err("Invalid option: {s}\n", .{opt});
93
+ return error.InvalidOption;
94
+ });
95
+ } else {
96
+ options.addOption(?bool, opt, true);
97
+ }
98
+ }
99
+ }
100
+
83
101
  const name = if (showdown) "pkmn-showdown" else "pkmn";
84
102
 
85
103
  const pkmn = if (@hasDecl(std.Build, "CreateModuleOptions")) null else b.addModule("pkmn", .{
@@ -131,73 +149,7 @@ pub fn build(b: *std.Build) !void {
131
149
  // rename the file ourself in install-pkmn-engine
132
150
  b.installArtifact(lib);
133
151
  } else if (wasm) {
134
- const entry = @hasDecl(Step.Compile, "Entry");
135
- const mode = switch (optimize) {
136
- .ReleaseFast, .ReleaseSafe => .ReleaseSmall,
137
- else => optimize,
138
- };
139
- const freestanding = if (@hasDecl(std.Build, "resolveTargetQuery"))
140
- b.resolveTargetQuery(.{ .cpu_arch = .wasm32, .os_tag = .freestanding })
141
- else
142
- ResolvedTarget{ .cpu_arch = .wasm32, .os_tag = .freestanding };
143
- const path = if (has_path) .{ .path = "src/lib/wasm.zig" } else b.path("src/lib/wasm.zig");
144
- const bin = if (entry) bin: {
145
- const exe = b.addExecutable(if (force_pic) .{
146
- .name = name,
147
- .root_source_file = path,
148
- .optimize = mode,
149
- .target = freestanding,
150
- } else .{
151
- .name = name,
152
- .root_source_file = path,
153
- .optimize = mode,
154
- .target = freestanding,
155
- .strip = strip,
156
- .pic = pic,
157
- });
158
- (if (root_module) exe.root_module else exe).export_symbol_names = &[_][]const u8{
159
- "SHOWDOWN",
160
- "LOG",
161
- "CHANCE",
162
- "CALC",
163
- "GEN1_CHOICES_SIZE",
164
- "GEN1_LOGS_SIZE",
165
- };
166
- exe.entry = .disabled;
167
- break :bin exe;
168
- } else bin: {
169
- const lib = b.addSharedLibrary(.{
170
- .name = name,
171
- .root_source_file = path,
172
- .optimize = mode,
173
- .target = freestanding,
174
- });
175
- lib.rdynamic = true;
176
- break :bin lib;
177
- };
178
- bin.stack_size = wasm_stack_size;
179
- if (@hasDecl(@TypeOf(bin.*), "strip")) bin.strip = strip orelse false;
180
- if (force_pic and pic orelse false) bin.force_pic = pic;
181
- (if (root_module) bin.root_module else bin).addOptions("build_options", options);
182
-
183
- const opt = b.findProgram(&.{"wasm-opt"}, &.{"./node_modules/.bin"}) catch null;
184
- if (optimize != .Debug and opt != null) {
185
- const out = b.fmt("build/lib/{s}.wasm", .{name});
186
- const sh = b.addSystemCommand(&.{ opt.?, "-O4" });
187
- sh.addArtifactArg(bin);
188
- sh.addArg("-o");
189
- if (@hasDecl(@TypeOf(sh.*), "addFileSourceArg")) {
190
- sh.addFileSourceArg(if (has_path) .{ .path = out } else b.path(out));
191
- } else {
192
- sh.addFileArg(if (has_path) .{ .path = out } else b.path(out));
193
- }
194
- b.getInstallStep().dependOn(&sh.step);
195
- if (!entry) b.installArtifact(bin);
196
- } else if (entry) {
197
- b.getInstallStep().dependOn(&b.addInstallArtifact(bin, .{
198
- .dest_dir = .{ .override = std.Build.InstallDir{ .lib = {} } },
199
- }).step);
200
- }
152
+ try buildWasm(b, name, "src/lib/wasm.zig", optimize, strip, pic, wasm_stack_size, options);
201
153
  } else if (dynamic) {
202
154
  const path = if (has_path) .{ .path = "src/lib/c.zig" } else b.path("src/lib/c.zig");
203
155
  const lib = b.addSharedLibrary(if (force_pic) .{
@@ -350,6 +302,78 @@ pub fn build(b: *std.Build) !void {
350
302
  }
351
303
  }
352
304
 
305
+ fn buildWasm(
306
+ b: *std.Build,
307
+ name: []const u8,
308
+ root_src_file: []const u8,
309
+ optimize: std.builtin.OptimizeMode,
310
+ strip: ?bool,
311
+ pic: ?bool,
312
+ wasm_stack_size: u64,
313
+ options: anytype,
314
+ ) !void {
315
+ const entry = @hasDecl(Step.Compile, "Entry");
316
+ const mode = switch (optimize) {
317
+ .ReleaseFast, .ReleaseSafe => .ReleaseSmall,
318
+ else => optimize,
319
+ };
320
+ const freestanding = if (@hasDecl(std.Build, "resolveTargetQuery"))
321
+ b.resolveTargetQuery(.{ .cpu_arch = .wasm32, .os_tag = .freestanding })
322
+ else
323
+ ResolvedTarget{ .cpu_arch = .wasm32, .os_tag = .freestanding };
324
+ const path = if (has_path) .{ .path = root_src_file } else b.path(root_src_file);
325
+ const bin = if (entry) bin: {
326
+ const exe = b.addExecutable(if (force_pic) .{
327
+ .name = name,
328
+ .root_source_file = path,
329
+ .optimize = mode,
330
+ .target = freestanding,
331
+ } else .{
332
+ .name = name,
333
+ .root_source_file = path,
334
+ .optimize = mode,
335
+ .target = freestanding,
336
+ .strip = strip,
337
+ .pic = pic,
338
+ });
339
+ (if (root_module) exe.root_module else exe).export_symbol_names = try exports(b);
340
+ exe.entry = .disabled;
341
+ break :bin exe;
342
+ } else bin: {
343
+ const lib = b.addSharedLibrary(.{
344
+ .name = name,
345
+ .root_source_file = path,
346
+ .optimize = mode,
347
+ .target = freestanding,
348
+ });
349
+ lib.rdynamic = true;
350
+ break :bin lib;
351
+ };
352
+ bin.stack_size = wasm_stack_size;
353
+ if (@hasDecl(@TypeOf(bin.*), "strip")) bin.strip = strip orelse false;
354
+ if (force_pic and pic orelse false) bin.force_pic = pic;
355
+ (if (root_module) bin.root_module else bin).addOptions("build_options", options);
356
+
357
+ const opt = b.findProgram(&.{"wasm-opt"}, &.{"./node_modules/.bin"}) catch null;
358
+ if (optimize != .Debug and opt != null) {
359
+ const out = b.fmt("build/lib/{s}.wasm", .{name});
360
+ const sh = b.addSystemCommand(&.{ opt.?, "-O4" });
361
+ sh.addArtifactArg(bin);
362
+ sh.addArg("-o");
363
+ if (@hasDecl(@TypeOf(sh.*), "addFileSourceArg")) {
364
+ sh.addFileSourceArg(if (has_path) .{ .path = out } else b.path(out));
365
+ } else {
366
+ sh.addFileArg(if (has_path) .{ .path = out } else b.path(out));
367
+ }
368
+ b.getInstallStep().dependOn(&sh.step);
369
+ if (!entry) b.installArtifact(bin);
370
+ } else if (entry) {
371
+ b.getInstallStep().dependOn(&b.addInstallArtifact(bin, .{
372
+ .dest_dir = .{ .override = std.Build.InstallDir{ .lib = {} } },
373
+ }).step);
374
+ }
375
+ }
376
+
353
377
  fn maybeStrip(
354
378
  b: *std.Build,
355
379
  artifact: *Step.Compile,
@@ -494,3 +518,23 @@ fn detect(target: anytype) std.Target {
494
518
  if (@hasField(@TypeOf(target), "result")) return target.result;
495
519
  return (std.zig.system.NativeTargetInfo.detect(target) catch unreachable).target;
496
520
  }
521
+
522
+ const WASM = @embedFile("src/lib/wasm.zig");
523
+
524
+ fn exports(b: *std.Build) ![][]const u8 {
525
+ var symbols = std.ArrayList([]const u8).init(b.allocator);
526
+
527
+ var it = std.mem.splitSequence(u8, WASM, "export ");
528
+ _ = it.next();
529
+ while (it.next()) |s| {
530
+ if (std.mem.startsWith(u8, s, "const ")) {
531
+ const i = std.mem.indexOf(u8, s[6..], " ").?;
532
+ try symbols.append(s[6 .. 6 + i]);
533
+ } else { // "fn "
534
+ const i = std.mem.indexOf(u8, s[3..], "(").?;
535
+ try symbols.append(s[3 .. 3 + i]);
536
+ }
537
+ }
538
+
539
+ return symbols.items;
540
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pkmn/engine",
3
- "version": "0.1.0-dev.53787794",
3
+ "version": "0.1.0-dev.54a1aa85",
4
4
  "description": "A minimal, complete, Pokémon battle simulation engine optimized for performance",
5
5
  "repository": "github:pkmn/engine",
6
6
  "license": "MIT",
@@ -21,6 +21,9 @@
21
21
  "build/pkg/addon/node.d.ts",
22
22
  "build/pkg/addon/node.js.map",
23
23
  "build/pkg/addon/node.js",
24
+ "build/pkg/addon/wasm.d.ts",
25
+ "build/pkg/addon/wasm.js.map",
26
+ "build/pkg/addon/wasm.js",
24
27
  "build/pkg/data.d.ts",
25
28
  "build/pkg/data.js.map",
26
29
  "build/pkg/data.js",
@@ -92,35 +95,38 @@
92
95
  "access": "public"
93
96
  },
94
97
  "dependencies": {
95
- "@pkmn/data": "^0.9.13",
98
+ "@pkmn/data": "^0.9.19",
96
99
  "@pkmn/protocol": "^0.6.26"
97
100
  },
98
101
  "devDependencies": {
99
- "@pkmn/eslint-config": "^8.3.0",
102
+ "@pkmn/eslint-config": "^8.4.0",
100
103
  "@pkmn/img": "^0.2.32",
101
104
  "@pkmn/sets": "^5.1.2",
102
- "@pkmn/sim": "0.9.13",
105
+ "@pkmn/sim": "0.9.19",
106
+ "@pkmn/smogon": "^0.5.14",
103
107
  "@types/html-minifier": "^4.0.5",
104
- "@types/jest": "^29.5.12",
108
+ "@types/jest": "^29.5.13",
105
109
  "@types/minimist": "^1.2.5",
106
110
  "@types/mustache": "^4.2.5",
107
- "@types/node": "^22.5.3",
108
- "@types/react": "^18.2.45",
111
+ "@types/node": "^22.7.4",
112
+ "@types/react": "^18.3.10",
109
113
  "@types/semver": "^7.5.8",
110
- "@vitest/coverage-v8": "^2.0.5",
111
- "binaryen": "^118.0.0",
112
- "esbuild": "^0.23.1",
114
+ "@types/vscode": "^1.93.0",
115
+ "@vitest/coverage-v8": "^2.1.1",
116
+ "@vscode/vsce": "^3.1.1",
117
+ "binaryen": "^119.0.0",
118
+ "esbuild": "^0.24.0",
113
119
  "eslint": "<=8",
114
120
  "html-minifier": "^4.0.0",
115
- "json-stringify-pretty-compact": "4.0.0",
121
+ "json-stringify-pretty-compact": "3.0.0",
116
122
  "minimist": "^1.2.8",
117
123
  "mustache": "^4.2.0",
118
124
  "semver": "^7.6.3",
119
125
  "source-map-support": "^0.5.21",
120
126
  "table": "^6.8.2",
121
127
  "trakr": "^0.2.0",
122
- "typescript": "^5.5.4",
123
- "vitest": "^2.0.5"
128
+ "typescript": "^5.6.2",
129
+ "vitest": "^2.1.1"
124
130
  },
125
131
  "scripts": {
126
132
  "lint": "eslint --cache src --ext ts,js && eslint src/bin/*",
@@ -136,6 +142,7 @@
136
142
  "release": "npm run compile && node build/tools/release",
137
143
  "benchmark": "npm run compile && node build/test/benchmark",
138
144
  "integration": "npm run compile && node build/test/integration",
145
+ "extension": "npm -C src/tools/vscode run build",
139
146
  "postinstall": "node src/bin/install-pkmn-engine"
140
147
  },
141
148
  "eslintConfig": {
@@ -144,7 +151,8 @@
144
151
  "dist/",
145
152
  "node_modules/",
146
153
  "examples/zig",
147
- "build/"
154
+ "build/",
155
+ "extension.js"
148
156
  ],
149
157
  "env": {
150
158
  "es6": true,
@@ -165,6 +173,7 @@
165
173
  },
166
174
  {
167
175
  "files": [
176
+ "src/pkg/common.ts",
168
177
  "src/pkg/index.ts",
169
178
  "src/test/integration.ts"
170
179
  ],
@@ -203,8 +212,7 @@
203
212
  },
204
213
  {
205
214
  "files": [
206
- "src/test/*.test.ts",
207
- "src/test/regression/*.test.ts"
215
+ "src/test/*.test.ts"
208
216
  ],
209
217
  "rules": {
210
218
  "jest/no-standalone-expect": "off"
@@ -257,7 +257,7 @@ const downloadImportLib = async () => {
257
257
  }
258
258
 
259
259
  const dir = path.join(ROOT, 'build', 'lib');
260
- const url = new URL('./win-x64/node.lib', process.release.headersUrl).href;
260
+ const url = process.release.libUrl;
261
261
  const dest = path.join(dir, path.basename(url));
262
262
  if (fs.existsSync(path.join(dest))) {
263
263
  log('Node import library:', dest);
@@ -4,13 +4,18 @@ const debug = std.debug;
4
4
  const io = std.io;
5
5
 
6
6
  const Array = if (@hasField(std.builtin.Type, "array")) .array else .Array;
7
+ const Enum = if (@hasField(std.builtin.Type, "enum")) .@"enum" else .Enum;
7
8
  const Optional = if (@hasField(std.builtin.Type, "optional")) .optional else .Optional;
8
9
  const Pointer = if (@hasField(std.builtin.Type, "pointer")) .pointer else .Pointer;
9
10
  const Struct = if (@hasField(std.builtin.Type, "struct")) .@"struct" else .Struct;
11
+ const Union = if (@hasField(std.builtin.Type, "union")) .@"union" else .Union;
10
12
 
11
13
  pub fn print(value: anytype) void {
12
- debug.lockStdErr();
13
- defer debug.unlockStdErr();
14
+ if (@hasDecl(debug, "lockStdErr")) debug.lockStdErr() else debug.getStderrMutex().lock();
15
+ defer if (@hasDecl(debug, "unlockStdErr"))
16
+ debug.unlockStdErr()
17
+ else
18
+ debug.getStderrMutex().unlock();
14
19
  const stderr = io.getStdErr().writer();
15
20
 
16
21
  nosuspend {
@@ -53,11 +58,11 @@ fn inspect(value: anytype) void {
53
58
  },
54
59
  Pointer => |ptr_info| switch (ptr_info.size) {
55
60
  .One => switch (@typeInfo(ptr_info.child)) {
56
- .Array => |info| {
61
+ Array => |info| {
57
62
  if (info.child == u8) return stderr.print("{s}", .{value}) catch return;
58
63
  @compileError(err);
59
64
  },
60
- .Enum, .Union, .Struct => return inspect(value.*),
65
+ Enum, Union, Struct => return inspect(value.*),
61
66
  else => @compileError(err),
62
67
  },
63
68
  .Many, .C => {
@@ -88,9 +93,9 @@ pub fn dump(gen: u8, battle: anytype, frame: ?struct { Result, Choice, Choice })
88
93
  var w = file.writer();
89
94
  w.writeByte(@intFromBool(showdown)) catch return;
90
95
  w.writeByte(gen) catch return;
91
- w.writeInt(u16, 0, .little) catch return;
96
+ w.writeInt(i16, 0, .little) catch return;
97
+ w.writeInt(i32, 0, .little) catch return;
92
98
  w.writeStruct(battle) catch return;
93
- w.writeByte(0) catch return;
94
99
  w.writeStruct(battle) catch return;
95
100
  if (frame) |f| {
96
101
  w.writeStruct(f[0]) catch return;
@@ -7,6 +7,7 @@ pub const Options = struct {
7
7
  log: ?bool = null,
8
8
  chance: ?bool = null,
9
9
  calc: ?bool = null,
10
+ mod: ?bool = null,
10
11
  advance: ?bool = null,
11
12
  ebc: ?bool = null,
12
13
  key: ?bool = null,
@@ -24,6 +25,7 @@ pub const chance = get("chance", false);
24
25
  /// Whether or not damage calculator support is enabled.
25
26
  pub const calc = get("calc", false);
26
27
 
28
+ pub const mod = showdown or get("mod", false);
27
29
  pub const advance = get("advance", true);
28
30
  pub const ebc = get("ebc", true);
29
31
  pub const key = get("key", false);
@@ -1,18 +1,14 @@
1
- const std = @import("std");
2
1
  const builtin = @import("builtin");
3
-
4
- const pkmn = @import("../pkmn.zig");
5
-
6
2
  const data = @import("data.zig");
7
3
  const options = @import("options.zig");
4
+ const pkmn = @import("../pkmn.zig");
5
+ const std = @import("std");
8
6
 
9
7
  const assert = std.debug.assert;
10
- const print = std.debug.print;
11
-
12
8
  const enabled = options.log;
13
-
14
- const Player = data.Player;
15
9
  const ID = data.ID;
10
+ const Player = data.Player;
11
+ const print = std.debug.print;
16
12
 
17
13
  const endian = builtin.cpu.arch.endian();
18
14
  const Endian = std.builtin.Endian;
@@ -15,7 +15,9 @@ const ComptimeFloat =
15
15
 
16
16
  /// Specialization of a rational number used by the engine to compute probabilties.
17
17
  /// For performance reasons the rational is only reduced lazily and thus `reduce` must be
18
- /// invoked explicitly before reading.
18
+ /// invoked explicitly before reading. Note that this laziness means that this implementation
19
+ /// sometimes overflows in places where an eager reduced implementation would not - to achieve
20
+ /// the same behavior as an eager implementation simply call `reduce` after each operation.
19
21
  pub fn Rational(comptime T: type) type {
20
22
  return extern struct {
21
23
  const Self = @This();
@@ -25,10 +27,10 @@ pub fn Rational(comptime T: type) type {
25
27
  /// Denominator. Must always be >= 1. Not guaranteed to be reduced in all cases.
26
28
  q: T = 1,
27
29
 
28
- // With floats we can't rely on an overflow bit to let us know when to reduce, so we instead
29
- // start reducing when we get sufficiently close to the limit of the mantissa (in our domain
30
- // we expect updates to involve numbers < 2**10, so we should be safe not reducing before we
31
- // are 2**10 away from "overflowing" the mantissa)
30
+ // With floats we can't rely on an overflow bit to let us know when to reduce, so we
31
+ // instead start reducing when we get sufficiently close to the limit of the mantissa
32
+ // (in our domain we expect updates to involve numbers < 2**10, so we should be safe
33
+ // not reducing before we are 2**10 away from "overflowing" the mantissa)
32
34
  const REDUCE = if (@typeInfo(T) == Float)
33
35
  std.math.pow(T, 2, std.math.floatMantissaBits(T) - 10)
34
36
  else
@@ -1,10 +1,8 @@
1
- const std = @import("std");
2
-
3
1
  const options = @import("options.zig");
2
+ const std = @import("std");
4
3
 
5
4
  const assert = std.debug.assert;
6
5
  const expectEqual = std.testing.expectEqual;
7
-
8
6
  const showdown = options.showdown;
9
7
 
10
8
  pub fn PRNG(comptime gen: comptime_int) type {