<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[1bite 的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ZML086</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ZML086]]></copyright><item><title><![CDATA[以 6502 为例讲讲怎么阅读 CPU 电路图]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/143261813</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/143261813</guid><author>ZML086</author><pubDate>Sat, 26 Oct 2024 23:50:01 +0800</pubDate><description><![CDATA[文本介绍了 NMOS 及提示了逻辑门是如何使用 NMOS 构建的，并用一个实际的例子演示了如何从 NMOS 电路图还原逻辑电路。希望本文可以满足你的好奇心，如果大家对 6502 其它部分的原理也感兴趣，欢迎阅读我的后续文章。]]></description><category></category></item><item><title><![CDATA[NES 模拟器中音画同步问题]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/135563730</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/135563730</guid><author>ZML086</author><pubDate>Fri, 12 Jan 2024 23:26:03 +0800</pubDate><description><![CDATA[本文探讨了模拟器中的音画同步问题，分析了各个原因，并提供了相应的解决方案。对模拟器开发，或者游戏循环开发有兴趣的朋友可以一读。]]></description><category></category></item><item><title><![CDATA[NES 系统架构]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/131010216</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/131010216</guid><author>ZML086</author><pubDate>Fri, 02 Jun 2023 16:49:09 +0800</pubDate><description><![CDATA[NES主机架构解析：核心组件与卡带设计 NES系统以CPU为核心，通过内存映射IO方式与PPU、APU、WRAM、IO设备及卡带通信，PPU则独立管理VRAM和卡带数据。卡带分为简单和复杂两种类型：简单卡带直接读写存储芯片，容量有限；复杂卡带引入MMC芯片实现地址扩展，支持更大存储空间和附加功能（如音频增强）。这种架构设计既满足了基础游戏运行需求，又通过卡带扩展实现了性能提升。参考资料包括NESDev技术文档和多位开发者的架构分析。]]></description><category></category></item><item><title><![CDATA[JS 实现简单 Parser]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/130043972</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/130043972</guid><author>ZML086</author><pubDate>Sun, 09 Apr 2023 16:35:55 +0800</pubDate><description><![CDATA[通过本文读者将学到如何实现一门领域特定语言（DSL），并使用这种 DSL 完成文本解析任务，例如 JSON 解析、表达式求值等。]]></description><category></category></item><item><title><![CDATA[6502 寻址时序]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/129748812</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/129748812</guid><author>ZML086</author><pubDate>Fri, 24 Mar 2023 13:25:53 +0800</pubDate><description><![CDATA[6502 共有 13 种寻址模式，我把每个寻址模式的时序整理成了表格，以便清晰地看出 CPU 内每个时钟周期的工作状态，对于理解 6502 的工作原理应该有所帮助]]></description><category></category></item><item><title><![CDATA[【译文】NTSC 2C02 技术参考]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/129629051</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/129629051</guid><author>ZML086</author><pubDate>Fri, 17 Mar 2023 22:04:00 +0800</pubDate><description><![CDATA[PPU（2C02）是 NES（FC、红白机、小霸王）的重要组件，正确理解它显然能让开发模拟器的工作快速进行。本文是对 Brad Taylor 所写文档 “NTSC 2C02 technical reference” 的中文翻译，是本人逐字逐句翻译而来，并非中文网上流传的机翻版本，希望对有兴趣的人有所帮助。]]></description><category></category></item><item><title><![CDATA[Mapper 档案：MMC1]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/129197016</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/129197016</guid><author>ZML086</author><pubDate>Fri, 24 Feb 2023 11:13:09 +0800</pubDate><description><![CDATA[NES（FC，红白机，小霸王）内存映射控制器（Mapper）MMC1 相关资料]]></description><category></category></item><item><title><![CDATA[Mapper 档案: MMC3]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/129194420</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/129194420</guid><author>ZML086</author><pubDate>Fri, 24 Feb 2023 10:54:12 +0800</pubDate><description><![CDATA[NES（FC，红白机，小霸王）内存映射控制器（Mapper）MMC3]]></description><category></category></item><item><title><![CDATA[NES APU Replayer]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/125831375</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/125831375</guid><author>ZML086</author><pubDate>Thu, 21 Jul 2022 21:29:11 +0800</pubDate><description><![CDATA[做了一个网页版的 NES（FC、小霸王、红白机）APU 可视化 UI，欢迎体验]]></description><category></category></item><item><title><![CDATA[NES APU]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/125645483</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/125645483</guid><author>ZML086</author><pubDate>Wed, 13 Jul 2022 17:27:59 +0800</pubDate><description><![CDATA[NES（小霸王、FC）模拟器开发中，各部分其实都不简单。而 APU 和声音系统的难点在于，我们可能缺乏相关的知识。desdev 上虽然有硬件各部分的详细说明，却不成系统，很零散。本文将围绕 “声音的产生”、“NES APU 的组成”、“播放 APU 声音” 三个知识点并结合代码的方式介绍如何实现 NES APU。.............................................]]></description><category></category></item><item><title><![CDATA[C++ 消息循环]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/124827780</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/124827780</guid><author>ZML086</author><pubDate>Fri, 10 Jun 2022 13:49:36 +0800</pubDate><description><![CDATA[消息循环是非常有用的工具，各平台都能见到它的身影，比如 CFRunLoop、Android Looper、Windows 消息循环等。有时候出于一些原因，我们并不想使用平台相关 API 或者三方库，就想自制一个简易的消息循环将就用，该怎么实现呢.........]]></description><category></category></item><item><title><![CDATA[Graphviz + Dot 经验分享]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/122238353</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/122238353</guid><author>ZML086</author><pubDate>Thu, 30 Dec 2021 15:39:02 +0800</pubDate><description><![CDATA[Graphviz + dot 经验分享，不定期更新。]]></description><category></category></item><item><title><![CDATA[JS 使用协程处理事件]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/122130375</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/122130375</guid><author>ZML086</author><pubDate>Wed, 29 Dec 2021 18:55:38 +0800</pubDate><description><![CDATA[ES6 引入了一个新的关键字 `yield`，用它可以实现发生器（generator）和协程（coroutine）。其中，协程有个很有趣的应用是用作事件循环。有了协程，对于事件的处理，除了传统的 “回调函数+状态” 方案外，我们又多了一个选择。]]></description><category></category></item><item><title><![CDATA[React 防抖动（debounce） Hook]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/121908536</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/121908536</guid><author>ZML086</author><pubDate>Thu, 16 Dec 2021 13:52:30 +0800</pubDate><description><![CDATA[防抖动 （debounce）是常见的需求，本文将演示两种方案应用 React Hooks 实现防抖。]]></description><category></category></item><item><title><![CDATA[JS 绘制 Cardinal 样条曲线]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/121724952</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/121724952</guid><author>ZML086</author><pubDate>Wed, 08 Dec 2021 22:01:43 +0800</pubDate><description><![CDATA[Cardinal 曲线
可以参考一下我另一篇文章 Cardinal 与三阶 Bezier 相互转换。
根据定义，给定点集 {Pk−1,Pk,Pk+1,Pk+2}\{ \mathbf {P}_{k-1}, \mathbf {P}_k, \mathbf {P}_{k+1}, \mathbf {P}_{k+2} \}{Pk−1​,Pk​,Pk+1​,Pk+2​} , 则 Pk\mathbf {P}_kPk​ 到 Pk+1\mathbf {P}_{k+1}Pk+1​ 之间的曲线可以由如下方程生成：
P(u)=au3]]></description><category></category></item><item><title><![CDATA[Cardinal 与三阶 Bezier 相互转换]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/121627699</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/121627699</guid><author>ZML086</author><pubDate>Tue, 30 Nov 2021 21:28:52 +0800</pubDate><description><![CDATA[Cardinal 曲线与三阶 Bezier 曲线同为 3 次曲线，理论上可以相互转换。
Cardinal 曲线
根据定义，给定点集 , 则 kkk 点到 k+1k+1k+1 点之间的曲线可以由如下方程生成：
P(u)=[u3u2u1][−s2−ss−2s2ss−33−2s−s−s0s00100][Pk−1PkPk+1Pk+2]
P(u) = \begin{bmatrix} u^3&amp; u^2 &amp; u &amp; 1 \end{bmatrix}
\begin{bmatrix}
-s &amp; ]]></description><category></category></item><item><title><![CDATA[数值分析算法]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/121581744</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/121581744</guid><author>ZML086</author><pubDate>Sun, 28 Nov 2021 14:04:50 +0800</pubDate><description><![CDATA[因研究一个新项目，了解到一些数值方法，记录下来，避免忘记。
前向欧拉法 (FE)
前向欧拉法可用于计算微分方程数值解。
根据导数的定义，当 hhh 足够小时，有：
y(x0+h)−y(x0)h=y′(x0)
\frac {y(x_0+h) - y(x_0)}{h} = y'(x_0)
hy(x0​+h)−y(x0​)​=y′(x0​)
稍加变换，可得：
y(x0+h)=y(x0)+hy′(x0)
y(x_0+h) = y(x_0) + hy'(x_0) 
y(x0​+h)=y(x0​)+hy′(x0​)
设]]></description><category></category></item><item><title><![CDATA[从 Git 提交历史生成 Release Note]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/119250241</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/119250241</guid><author>ZML086</author><pubDate>Mon, 02 Aug 2021 15:40:50 +0800</pubDate><description><![CDATA[git log --format='%(trailers:key=Type,valueonly,separator=%x20)%x1c%s [%(trailers:key=Issue,valueonly,separator=,)]' $FROM..HEAD | awk -F "\034" '
    {
        gsub(/\[\]$/, "", $2);
        if (length($1) == 0) $1="MISC";
        if (!($1 in item_count))]]></description><category></category></item><item><title><![CDATA[boardgame.io 五子棋（三）：增加趣味]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/118069731</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/118069731</guid><author>ZML086</author><pubDate>Mon, 21 Jun 2021 23:24:19 +0800</pubDate><description><![CDATA[太长不看：点击这里查看源代码
上一篇我们做了一个自己的蒙特卡洛 AI，今天我们给我们的游戏增添一点趣味。
对称性
我们知道五子棋游戏具有对称性，包含旋转和轴对称总计 8 种对称。纵使一个局面有这么多的对称局面，而 AI 却不见得可以利用这种对称性。由于 AI 不懂对称性，总是下相同的着法，咱们可以在游戏中把局面进行对称变换，让 AI 下出来的着法看似有所不同，从而增加一点趣味。大致思路就是，把人类的着法进行变换，然后把 AI 思考出来的着法进行反变换。
首先，咱们要有变换函数。新建 src/Symmetry]]></description><category></category></item><item><title><![CDATA[boardgame.io 五子棋（二）: AI 改造]]></title><link>https://blog.youkuaiyun.com/ZML086/article/details/117755095</link><guid>https://blog.youkuaiyun.com/ZML086/article/details/117755095</guid><author>ZML086</author><pubDate>Sun, 20 Jun 2021 14:32:00 +0800</pubDate><description><![CDATA[太长不看： 点击这里查看完整代码。
上一篇我们使用 boardgame.io + wgo.js + React 制作了一个简单的五子棋游戏，虽然引擎给我们搭配了 AI，不过 AI 实在太弱且效率不高，今天我们就自己做一个AI。
蒙特卡洛！
通过 Debug 面板我们看到，boardgame.io 搭配的 AI 是基于蒙特卡洛的，只是它的实现因为抽象和架构的原因，效率不高且不支持神经网络评估器，我们做一个自己的蒙特卡洛。
我们的蒙特卡洛需提供如下功能：

自定义评估器。这样我们就能实现神经网络评估和随机模拟评]]></description><category></category></item></channel></rss>