mirror of
https://github.com/kirjavascript/trueLMAO.git
synced 2024-05-20 13:17:26 -04:00
remove old desktop/web folders
This commit is contained in:
parent
a734488a5f
commit
aa0e8b9f2f
|
@ -2,8 +2,6 @@
|
|||
|
||||
members = [
|
||||
"emu",
|
||||
"web",
|
||||
"desktop",
|
||||
"frontend",
|
||||
]
|
||||
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
[package]
|
||||
name = "desktop"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
emu = { path = "../emu" }
|
||||
fltk = { version = "^1" }
|
|
@ -1,208 +0,0 @@
|
|||
use fltk::{
|
||||
app,
|
||||
draw,
|
||||
button::Button,
|
||||
frame::Frame,
|
||||
input::IntInput,
|
||||
prelude::*,
|
||||
window::Window,
|
||||
text::{TextBuffer, TextDisplay},
|
||||
enums::Key,
|
||||
};
|
||||
|
||||
use std::cell::RefCell;
|
||||
use std::rc::Rc;
|
||||
use std::time::Instant;
|
||||
|
||||
use emu::Megadrive;
|
||||
|
||||
pub enum Msg {
|
||||
Step, Frame
|
||||
}
|
||||
|
||||
macro_rules! clone {
|
||||
( $( $x:ident ),* => $y:expr ) => {
|
||||
{
|
||||
$(let $x = $x.clone();)*
|
||||
$y
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let app = app::App::default();
|
||||
// let buf: Vec<u8> = include_bytes!("./roms/joy_speed_v1.02.bin").to_vec();
|
||||
// let buf: Vec<u8> = include_bytes!("./roms/Window Test by Fonzie (PD).bin").to_vec();
|
||||
let buf: Vec<u8> = include_bytes!("../../notes/test-roms/240ptestsuite/240pSuite-1.23.bin").to_vec();
|
||||
// let buf: Vec<u8> = include_bytes!("../../notes/pc.md").to_vec();
|
||||
// let buf: Vec<u8> = include_bytes!("/home/cake/Genesis/Golden Axe II (W) [!].bin").to_vec();
|
||||
// let buf: Vec<u8> = include_bytes!("/home/cake/sonic/roms/s2.bin").to_vec();
|
||||
|
||||
let mut emu = Megadrive::new(buf);
|
||||
|
||||
let mut wind = Window::new(100, 100, 800, 600, "trueLMAO");
|
||||
let mut but = Button::new(400, 350, 80, 40, "frame");
|
||||
let mut step = Button::new(400, 400, 80, 40, "step");
|
||||
let stepby = IntInput::new(400, 450, 80, 40, "step by");
|
||||
let mut info = TextDisplay::new(0, 0, 500, 300, "asm");
|
||||
let mut toggle = Button::new(400, 300, 80, 40, "stop");
|
||||
stepby.set_value("1");
|
||||
|
||||
let mut pal = Frame::new(0, 300, 16, 4, "");
|
||||
let mut palbuf: Vec<u8> = vec![0xFF; (16 * 4 * 3) as usize];
|
||||
|
||||
let mut vram = Frame::new(500, 0, 256, 513, "");
|
||||
let mut vrambuf: Vec<u8> = vec![0xFF; (256 * 513 * 3) as usize];
|
||||
|
||||
let mut screen = Frame::new(0, 350, 320, 240, "");
|
||||
|
||||
wind.end();
|
||||
wind.show();
|
||||
|
||||
unsafe {
|
||||
draw::draw_rgb_nocopy(&mut pal, &palbuf);
|
||||
draw::draw_rgb_nocopy(&mut vram, &vrambuf);
|
||||
draw::draw_rgb_nocopy(&mut screen, &emu.gfx.screen);
|
||||
}
|
||||
|
||||
pal.set_size(160,40);
|
||||
|
||||
info.set_buffer(TextBuffer::default());
|
||||
let mut buffer = info.buffer().unwrap();
|
||||
|
||||
let name = emu.core.mem.rom.domestic_name()
|
||||
.split_whitespace().collect::<Vec<&str>>().join(" ");
|
||||
|
||||
wind.set_label(&format!("trueLMAO - {}", name));
|
||||
|
||||
let running = Rc::from(RefCell::from(true));
|
||||
|
||||
toggle.set_callback(clone!(running => move |toggle| {
|
||||
let toggled = !*running.borrow();
|
||||
*running.borrow_mut() = toggled;
|
||||
toggle.set_label(if toggled { "stop" } else { "go" });
|
||||
}));
|
||||
|
||||
let messages = Rc::from(RefCell::from(Vec::new()));
|
||||
|
||||
but.set_callback(clone!(messages => move |_| {
|
||||
messages.borrow_mut().push(Msg::Frame);
|
||||
}));
|
||||
|
||||
step.set_callback(clone!(messages => move |_| {
|
||||
messages.borrow_mut().push(Msg::Step);
|
||||
}));
|
||||
|
||||
while app.wait() {
|
||||
let start = Instant::now();
|
||||
|
||||
// bad temp gamepad code:
|
||||
let mut gamepad = 0;
|
||||
if app::event_key_down(Key::from_char('w')) { gamepad |= 1; }
|
||||
if app::event_key_down(Key::from_char('s')) { gamepad |= 1 << 1; }
|
||||
if app::event_key_down(Key::from_char('a')) { gamepad |= 1 << 2; }
|
||||
if app::event_key_down(Key::from_char('d')) { gamepad |= 1 << 3; }
|
||||
if app::event_key_down(Key::from_char(',')) { gamepad |= 1 << 6; }
|
||||
if app::event_key_down(Key::from_char('.')) { gamepad |= 1 << 4; }
|
||||
if app::event_key_down(Key::from_char('/')) { gamepad |= 1 << 5; }
|
||||
if app::event_key_down(Key::ShiftR) { gamepad |= 1 << 7; }
|
||||
emu.core.mem.io.gamepad[0].set(gamepad);
|
||||
|
||||
while let Some(msg) = messages.borrow_mut().pop() {
|
||||
match msg {
|
||||
Msg::Step => {
|
||||
emu.step_n(stepby.value().parse::<usize>().unwrap_or(1));
|
||||
},
|
||||
Msg::Frame => {
|
||||
emu.frame(true);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
if *running.borrow() {
|
||||
emu.frame(true);
|
||||
}
|
||||
|
||||
|
||||
let mut debug = String::new();
|
||||
debug.push_str(&format!("PC: {:X}\n\n", emu.core.pc));
|
||||
|
||||
|
||||
// let v = emu.core.mem.vdp.VSRAM.iter().map(|x|format!("{:X}", x)).collect::<Vec<String>>().join(" ");
|
||||
// debug.push_str(&format!("VSRAM: {}\n\n", v));
|
||||
|
||||
|
||||
debug.push_str(&format!("D "));
|
||||
for i in 0..=7 {
|
||||
debug.push_str(&format!("{:X} ", emu.core.dar[i]));
|
||||
}
|
||||
debug.push_str(&format!("\n"));
|
||||
|
||||
debug.push_str(&format!("A "));
|
||||
for i in 0..=7 {
|
||||
debug.push_str(&format!("{:X} ", emu.core.dar[i + 8]));
|
||||
}
|
||||
debug.push_str(&format!("\n"));
|
||||
debug.push_str(&format!("\n"));
|
||||
|
||||
for (pc, opcode) in emu.disasm() {
|
||||
debug.push_str(&format!("0x{:X}\t{}\n", pc, opcode));
|
||||
}
|
||||
buffer.set_text(&debug);
|
||||
|
||||
// render CRAM
|
||||
|
||||
let cram_rgb = emu.core.mem.vdp.cram_rgb();
|
||||
|
||||
for (i, (red, green, blue)) in cram_rgb.iter().enumerate() {
|
||||
let index = i * 3;
|
||||
palbuf[index] = *red;
|
||||
palbuf[index+1] = *green;
|
||||
palbuf[index+2] = *blue;
|
||||
}
|
||||
|
||||
// render VRAM
|
||||
|
||||
for (i, duxels) in emu.core.mem.vdp.VRAM.chunks(32).enumerate() {
|
||||
let x_base = (i % 32) * 3 * 8;
|
||||
let y_base = (i / 32) * 3 * 8 * 256;
|
||||
let mut x = 0;
|
||||
let mut y = 0;
|
||||
|
||||
let mut tile = vec![];
|
||||
for duxel in duxels {
|
||||
let first = (*duxel & 0xF0) >> 4;
|
||||
let second = *duxel & 0xF;
|
||||
tile.push(first);
|
||||
tile.push(second);
|
||||
}
|
||||
|
||||
for pixel in tile {
|
||||
let (r, g, b) = cram_rgb[pixel as usize];
|
||||
let base = x_base + y_base + x + y;
|
||||
|
||||
if base+2 > vrambuf.len() {
|
||||
break;
|
||||
}
|
||||
|
||||
vrambuf[base] = r;
|
||||
vrambuf[base+1] = g;
|
||||
vrambuf[base+2] = b;
|
||||
x += 3;
|
||||
if x >= (8 * 3) {
|
||||
x = 0;
|
||||
y += 256 * 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wind.redraw();
|
||||
|
||||
let end = Instant::now();
|
||||
let render_time = (end-start).as_secs_f64();
|
||||
let frame_time = 1./60.;
|
||||
|
||||
app::sleep(frame_time - render_time);
|
||||
}
|
||||
}
|
|
@ -59,8 +59,6 @@ fn cram_to_rgb(color: u16) -> (u8, u8, u8) {
|
|||
}
|
||||
|
||||
impl VDP {
|
||||
// 91
|
||||
// 13.2
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
VRAM: [0; 0x10000],
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
[package]
|
||||
name = "web"
|
||||
version = "0.1.0"
|
||||
edition = "2018"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
emu = { path = "../emu" }
|
||||
lazy_mut = "0.1.0"
|
||||
wasm-bindgen = "*"
|
|
@ -1,38 +0,0 @@
|
|||
const controls = new Set([]);
|
||||
|
||||
window.addEventListener('blur', () => { controls.clear(); });
|
||||
window.addEventListener('focus', () => { controls.clear(); });
|
||||
|
||||
const keymap = {};
|
||||
|
||||
[
|
||||
[1 << 7, ['Enter', 'Shift']], // start
|
||||
[1 << 6, ['z', 'Z', ',', '<']], // A
|
||||
[1 << 5, ['c', 'C', '/', '?']], // C
|
||||
[1 << 4, ['x', 'X', '.', '>', ' ']], // B
|
||||
[1 << 3, ['ArrowRight', 'd', 'D']], // R
|
||||
[1 << 2, ['ArrowLeft', 'a', 'A']], // L
|
||||
[1 << 1, ['ArrowDown', 's', 'S']], // D
|
||||
[1, ['ArrowUp', 'w', 'W']], // U
|
||||
].forEach(([value, keys]) => {
|
||||
keys.forEach(key => { keymap[key] = value; });
|
||||
});
|
||||
|
||||
const html = document.documentElement;
|
||||
|
||||
html.addEventListener('keydown', e => {
|
||||
if (e.key in keymap) {
|
||||
controls.add(e.key);
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
html.addEventListener('keyup', e => {
|
||||
if (e.key in keymap) {
|
||||
controls.delete(e.key);
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
export default function() {
|
||||
return [...controls].reduce((a, c) => a | keymap[c], 0);
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
import init from '../pkg/web.js';
|
||||
import gamepad from './gamepad.js';
|
||||
|
||||
const canvas = document.querySelector('canvas');
|
||||
const ctx = canvas.getContext('2d', { alpha: false });
|
||||
const img = ctx.createImageData(320, 240);
|
||||
|
||||
(async () => {
|
||||
const emu = await init('emu.wasm');
|
||||
|
||||
function draw() {
|
||||
const buffer = new Uint8ClampedArray(
|
||||
emu.memory.buffer, emu.screen(), 320 * 240 * 3
|
||||
);
|
||||
for (let i = 0; i < 320*240; i++) {
|
||||
const bufferIndex = i * 3;
|
||||
const imgIndex = i * 4;
|
||||
img.data[imgIndex+0] = buffer[bufferIndex+0];
|
||||
img.data[imgIndex+1] = buffer[bufferIndex+1];
|
||||
img.data[imgIndex+2] = buffer[bufferIndex+2];
|
||||
img.data[imgIndex+3] = 255;
|
||||
}
|
||||
|
||||
ctx.putImageData(img, 0, 0);
|
||||
|
||||
// ctx.putImageData(new ImageData(buffer, 320), 0, 0);
|
||||
|
||||
// TODO: webgl
|
||||
}
|
||||
|
||||
const frameCount = document.querySelector('.frameCount');
|
||||
const epoch = performance.now();
|
||||
let framesDone = 0;
|
||||
const loop = () => {
|
||||
requestAnimationFrame(loop);
|
||||
|
||||
const diff = performance.now() - epoch;
|
||||
const frames = diff * 0.06 | 0; // real value is 0.05992274
|
||||
const frameAmount = frames - framesDone;
|
||||
frameCount.textContent = String(frameAmount);
|
||||
|
||||
if (document.visibilityState !== 'hidden') {
|
||||
|
||||
emu.gamepad_p1(gamepad());
|
||||
|
||||
if (frameAmount > 5) {
|
||||
emu.frame(true);
|
||||
} else {
|
||||
for (let i = 0; i < frameAmount; i++) {
|
||||
emu.frame(i === frameAmount - 1);
|
||||
}
|
||||
}
|
||||
if (frameAmount > 0) {
|
||||
draw();
|
||||
}
|
||||
}
|
||||
framesDone = frames;
|
||||
};
|
||||
loop();
|
||||
})();
|
|
@ -1,9 +0,0 @@
|
|||
#!/bin/sh
|
||||
wasm-pack build --release --target web --out-dir pkg
|
||||
cp pkg/web_bg.wasm static/emu.wasm
|
||||
|
||||
# develop
|
||||
# https://www.npmjs.com/package/local-web-server
|
||||
# trap 'kill %1; kill %2' SIGINT
|
||||
# cargo watch -s 'wasm-pack build --target web && cp pkg/web_bg.wasm static/emu.wasm' -w src -w ../emu &
|
||||
# ws --spa index.html --directory static &
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"scripts": {
|
||||
"watch": "esbuild app/main.js --bundle --watch --outfile=static/main.js",
|
||||
"build": "esbuild app/main.js --bundle --minify --outfile=static/main.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"esbuild": "^0.14.23"
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
use wasm_bindgen::prelude::*;
|
||||
use lazy_mut::lazy_mut;
|
||||
|
||||
use emu::Megadrive;
|
||||
|
||||
lazy_mut! {
|
||||
static mut EMU: Megadrive = Megadrive::new(
|
||||
include_bytes!("/home/cake/sonic/roms/s2.bin").to_vec()
|
||||
);
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn frame(render: bool) {
|
||||
unsafe { EMU.frame(render); }
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn screen() -> *const u8 {
|
||||
unsafe { EMU.gfx.screen.as_ptr() }
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn gamepad_p1(value: usize) {
|
||||
unsafe { EMU.core.mem.io.gamepad[0].set(value) }
|
||||
}
|
2
web/static/.gitignore
vendored
2
web/static/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
*.js
|
||||
*.wasm
|
|
@ -1,57 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1"
|
||||
name="viewport"
|
||||
/>
|
||||
<link
|
||||
href="data:image/x-icon;base64,AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAdJ6tAP///wAmOUAAq6ahAIpyUwB4TxkA45MrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAZjMzMAAABmZjERETMAAGZjERERERAAZmMREiIhFABmZzIlIiIwQGZ3d1IiACAAZ3d3IiIAUAB3d3ciIgB3AHd3dyIiB3cAd3d3QiRXd1B3d3V0RXd3cHYzd1d3d3cAdjERdVVXdwBmMRZ1d3d2AHdhZ3d3d2YAd2Z3d3dwZgBgPwAAAA8AAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAEwAA"
|
||||
rel="icon"
|
||||
type="image/x-icon"
|
||||
/>
|
||||
<style>
|
||||
canvas {
|
||||
width: 100%;
|
||||
max-height: 90vh;
|
||||
box-shadow: 2px 2px 5px black;
|
||||
/*
|
||||
image-rendering: -moz-crisp-edges;
|
||||
image-rendering: -webkit-crisp-edges;
|
||||
image-rendering: pixelated;
|
||||
image-rendering: crisp-edges;
|
||||
*/
|
||||
}
|
||||
main {
|
||||
width: 800px;
|
||||
}
|
||||
html, body {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
background-color: #111;
|
||||
color: #777;
|
||||
}
|
||||
body {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-family: monospace;
|
||||
}
|
||||
h1, span {
|
||||
font-size: 15px;
|
||||
margin: 6px 0;
|
||||
}
|
||||
</style>
|
||||
<title>trueLMAO</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>noscript mode</noscript>
|
||||
<main>
|
||||
<canvas width="320" height="224"></canvas>
|
||||
<h1>DEMO</h1>
|
||||
<span class="frameCount"></span>
|
||||
</main>
|
||||
<script src="./main.js"></script>
|
||||
</body>
|
||||
</html>
|
128
web/yarn.lock
128
web/yarn.lock
|
@ -1,128 +0,0 @@
|
|||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
esbuild-android-arm64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz#c89b3c50b4f47668dcbeb0b34ee4615258818e71"
|
||||
integrity sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==
|
||||
|
||||
esbuild-darwin-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz#1c131e8cb133ed935ca32f824349a117c896a15b"
|
||||
integrity sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==
|
||||
|
||||
esbuild-darwin-arm64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz#3c6245a50109dd84953f53d7833bd3b4f0e8c6fa"
|
||||
integrity sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==
|
||||
|
||||
esbuild-freebsd-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz#0cdc54e72d3dd9cd992f9c2960055e68a7f8650c"
|
||||
integrity sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==
|
||||
|
||||
esbuild-freebsd-arm64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz#1d11faed3a0c429e99b7dddef84103eb509788b2"
|
||||
integrity sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==
|
||||
|
||||
esbuild-linux-32@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz#fd9f033fc27dcab61100cb1eb1c936893a68c841"
|
||||
integrity sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==
|
||||
|
||||
esbuild-linux-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz#c04c438514f1359ecb1529205d0c836d4165f198"
|
||||
integrity sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==
|
||||
|
||||
esbuild-linux-arm64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz#d1b3ab2988ab0734886eb9e811726f7db099ab96"
|
||||
integrity sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==
|
||||
|
||||
esbuild-linux-arm@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz#df7558b6a5076f5eb9fd387c8704f768b61d97fb"
|
||||
integrity sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==
|
||||
|
||||
esbuild-linux-mips64le@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz#bb4c47fccc9493d460ffeb1f88e8a97a98a14f8b"
|
||||
integrity sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==
|
||||
|
||||
esbuild-linux-ppc64le@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz#a332dbc8a1b4e30cfe1261bfaa5cef57c9c8c02a"
|
||||
integrity sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==
|
||||
|
||||
esbuild-linux-riscv64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz#85675f3f931f5cd7cfb238fd82f77a62ffcb6d86"
|
||||
integrity sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==
|
||||
|
||||
esbuild-linux-s390x@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz#a526282a696e6d846f4c628f5315475518c0c0f0"
|
||||
integrity sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==
|
||||
|
||||
esbuild-netbsd-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz#8e456605694719aa1be4be266d6cd569c06dfaf5"
|
||||
integrity sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==
|
||||
|
||||
esbuild-openbsd-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz#f2fc51714b4ddabc86e4eb30ca101dd325db2f7d"
|
||||
integrity sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==
|
||||
|
||||
esbuild-sunos-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz#a408f33ea20e215909e20173a0fd78b1aaad1f8e"
|
||||
integrity sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==
|
||||
|
||||
esbuild-windows-32@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz#b9005bbff54dac3975ff355d5de2b5e37165d128"
|
||||
integrity sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==
|
||||
|
||||
esbuild-windows-64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz#2b5a99befeaca6aefdad32d738b945730a60a060"
|
||||
integrity sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==
|
||||
|
||||
esbuild-windows-arm64@0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz#edc560bbadb097eb45fc235aeacb942cb94a38c0"
|
||||
integrity sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==
|
||||
|
||||
esbuild@^0.14.23:
|
||||
version "0.14.23"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.23.tgz#95e842cb22bc0c7d82c140adc16788aac91469fe"
|
||||
integrity sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==
|
||||
optionalDependencies:
|
||||
esbuild-android-arm64 "0.14.23"
|
||||
esbuild-darwin-64 "0.14.23"
|
||||
esbuild-darwin-arm64 "0.14.23"
|
||||
esbuild-freebsd-64 "0.14.23"
|
||||
esbuild-freebsd-arm64 "0.14.23"
|
||||
esbuild-linux-32 "0.14.23"
|
||||
esbuild-linux-64 "0.14.23"
|
||||
esbuild-linux-arm "0.14.23"
|
||||
esbuild-linux-arm64 "0.14.23"
|
||||
esbuild-linux-mips64le "0.14.23"
|
||||
esbuild-linux-ppc64le "0.14.23"
|
||||
esbuild-linux-riscv64 "0.14.23"
|
||||
esbuild-linux-s390x "0.14.23"
|
||||
esbuild-netbsd-64 "0.14.23"
|
||||
esbuild-openbsd-64 "0.14.23"
|
||||
esbuild-sunos-64 "0.14.23"
|
||||
esbuild-windows-32 "0.14.23"
|
||||
esbuild-windows-64 "0.14.23"
|
||||
esbuild-windows-arm64 "0.14.23"
|
||||
|
||||
three@^0.137.5:
|
||||
version "0.137.5"
|
||||
resolved "https://registry.yarnpkg.com/three/-/three-0.137.5.tgz#a1e34bedd0412f2d8797112973dfadac78022ce6"
|
||||
integrity sha512-rTyr+HDFxjnN8+N/guZjDgfVxgHptZQpf6xfL/Mo7a5JYIFwK6tAq3bzxYYB4Ae0RosDZlDuP+X5aXDXz+XnHQ==
|
Loading…
Reference in a new issue