From 5bb90559ab6a7004581b9d7ee7ed5d7514840bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Thu, 10 Nov 2022 22:37:52 +0000 Subject: [PATCH] feat: better debugging --- examples/web/react/app.tsx | 4 ++- .../components/registers-gb/registers-gb.tsx | 34 +++++++++++++++---- examples/web/react/components/tiles/tiles.tsx | 2 +- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/examples/web/react/app.tsx b/examples/web/react/app.tsx index ae936530..0e72b11e 100644 --- a/examples/web/react/app.tsx +++ b/examples/web/react/app.tsx @@ -566,7 +566,9 @@ export const App: FC<AppProps> = ({ emulator, backgrounds = ["264653"] }) => { }} > <h3>Registers</h3> - <RegistersGB registers={emulator.registers} /> + <RegistersGB + getRegisters={() => emulator.registers} + /> </div> </Section> )} diff --git a/examples/web/react/components/registers-gb/registers-gb.tsx b/examples/web/react/components/registers-gb/registers-gb.tsx index 96db4a1c..11843d27 100644 --- a/examples/web/react/components/registers-gb/registers-gb.tsx +++ b/examples/web/react/components/registers-gb/registers-gb.tsx @@ -1,29 +1,51 @@ -import React, { FC } from "react"; +import React, { FC, useEffect, useRef, useState } from "react"; import "./registers-gb.css"; type RegistersGBProps = { - registers: Record<string, string | number>; + getRegisters: () => Record<string, string | number>; + interval?: number; style?: string[]; }; export const RegistersGB: FC<RegistersGBProps> = ({ - registers, + getRegisters, + interval = 100, style = [] }) => { const classes = () => ["registers-gb", ...style].join(" "); + const [registers, setRegisters] = useState<Record<string, string | number>>( + {} + ); + const intervalsRef = useRef<number>(); + useEffect(() => { + const updateRegisters = () => { + const registers = getRegisters(); + setRegisters(registers); + }; + setInterval(() => updateRegisters(), interval); + updateRegisters(); + return () => { + if (intervalsRef.current) { + clearInterval(intervalsRef.current); + } + }; + }, []); const renderRegister = ( key: string, - value: number, + value?: number, size = 2, styles: string[] = [] ) => { const classes = ["register", ...styles].join(" "); - const valueS = value.toString(16).toUpperCase().padStart(size, "0"); + const valueS = + value?.toString(16).toUpperCase().padStart(size, "0") ?? value; return ( <div className={classes}> <span className="register-key">{key}</span> - <span className="register-value">0x{valueS}</span> + <span className="register-value"> + {valueS ? `0x${valueS}` : "-"} + </span> </div> ); }; diff --git a/examples/web/react/components/tiles/tiles.tsx b/examples/web/react/components/tiles/tiles.tsx index 483b6cf0..78b340e1 100644 --- a/examples/web/react/components/tiles/tiles.tsx +++ b/examples/web/react/components/tiles/tiles.tsx @@ -18,7 +18,7 @@ export const Tiles: FC<TilesProps> = ({ tileCount, width, contentBox = true, - interval = 500, + interval = 1000, style = [] }) => { const classes = () => -- GitLab