How old consoles work!

7 min read Original article ↗

More Related Content

The Ring programming language version 1.5.2 book - Part 45 of 181

Lecture2 mysql by okello erick

The Ring programming language version 1.9 book - Part 56 of 210

The Ring programming language version 1.5.3 book - Part 79 of 184

The Ring programming language version 1.5.4 book - Part 47 of 185

What's hot

Swift girls 5th_teaching_meeting20160829

Raspberry Pi à la GroovyFX

The Ring programming language version 1.8 book - Part 53 of 202

The Ring programming language version 1.10 book - Part 56 of 212

Introduction To MySQL Lecture 1

The Ring programming language version 1.5 book - Part 9 of 31

Tracking Data Updates in Real-time with Change Data Capture

Elixir -Tolerância a Falhas para Adultos - GDG Campinas

The Ring programming language version 1.3 book - Part 52 of 88

Investigating Python Wats

Lecture5 my sql statements by okello erick

Similar to How old consoles work!

hashdays 2011: Ange Albertini - Such a weird processor - messing with x86 opc...

class04_x86assembly.ppt hy there u need be

Introduction to Reverse Engineering.....

Emulating With JavaScript

Basics of building a blackfin application

Qemu JIT Code Generator and System Emulation

Basic computer organization design

Introduction to Linux Exploit Development

8085-micropprocessor power ponts7-phpapp01.ppt

Code GPU with CUDA - Memory Subsystem

Examinable Question and answer system programming

Recently uploaded

TOWERS AND COLUMNS,maintenance and inspection.ppt

Basic PLC - Solid introduction _ 1 .pptx

410776623-5G 3GPP STANDARED-Overview.pptx

A NOVEL TRUST-BASED DDOS CYBERATTACK DETECTION MODEL FOR SMART BUSINESSENVIRO...

Lecture 2_Introduction to engineering design.pptx

Forouzan6e_ch09_PPTs_Transport.pptxmcgrawhill

STRUCTURAL CHARACTERIZATION OF A SHAPE MEMORY ALLOY (CU-AL-NI) MANUFACTURED B...

ARCHITECTURAL ORNAMENTATION powerpoint.pptx

Unit 5 - THERMO ELECTRIC ENERGY BASED PROCESSES .pptx

0acebd80-08f7-4be1-9135-15abe45dbc94.pdf

AI INTRODUCTION New Microsoft Office PowerPoint Presentation.pptx

Chapter4- Continuous-Time Markov Models- Stpchastoc Processes- Dr. Zahedi.pptx

PVD MNA 501 Recipe Review with understanding

Data Streams and Mining_1.ppt UNIT ONE COVERED

John Chipponeri - Senior Project Manager

Introduction to ARTIFICIAL INTELLIGENCES

convex_hull generation using the Quickhull

MOHSIN IJAZ PRESENTATION Final-climate.pptx

Unit 2 - ABRASIVE PROCESS AND BROACHING.pptx

SOFTWARE PROJECT MANAGEMENT PART 1-.pptx

How old consoles work!

  • 1.
  • 2.
  • 3.
  • 4.

    @github.com/leandromoreira Decimal 0 12 3 10 Binary 00 01 10 11 1010 Hexadecimal 0x0 0x1 0x2 0x3 0xA 0123456789 01 1 2 3 1 10 11 4 100 0 0 Numeric system

  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

    @github.com/leandromoreira (parallelism) ● CPU readsinstructions from memory ● CPU executes instructions ○ sum points ○ write to memory ○ reads next instruction ● GPU reads content to render from memory ● GPU renders the screen ○ renders line 0 ○ ... ○ renders line 255 How does it work?

  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

    @github.com/leandromoreira lda $2002; CPU.A= M[0x2002] sta $2002; M[0x2002] = CPU.A inx ; CPU.X = CPU.X + 1 jmp $2002; CPU.PC = 0x2002 jsr $2002; CPU.RT = CPU.PC; CPU.PC = 0x2002 rts ; CPU.PC = CPU.RT; sbc $2002; CPU.A = CPU.A - M[0x2002] ... 6052 Hello world

  • 20.
  • 21.
  • 22.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0000 CPU.A = 0x00 CPU.X = 0x00 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 00 00 00 00 00 00

  • 23.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0000 CPU.A = 0x00 CPU.X = 0x08 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 00 00 00 00 00 00

  • 24.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0002 CPU.A = 0x00 CPU.X = 0x07 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 00 00 00 00 00 00

  • 25.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0003 CPU.A = 0x00 CPU.X = 0x07 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 07 00 00 00 00 00

  • 26.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0006 CPU.A = 0x00 CPU.X = 0x07 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 07 00 00 00 00 00

  • 27.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 (-7) STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0008 CPU.A = 0x00 CPU.X = 0x07 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 07 00 00 00 00 00

  • 28.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x0002 CPU.A = 0x00 CPU.X = 0x06 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 07 00 00 00 00 00

  • 29.
  • 30.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x000A CPU.A = 0x00 CPU.X = 0x03 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 03 03 00 00 00 00

  • 31.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 CPU CPU.PC = 0x000D CPU.A = 0x00 CPU.X = 0x03 CPU.Y = 0x00 Memory 0x0000 a2 08 ca 8e 00 02 0x0006 e0 03 d0 f8 8e 01 0x000C 02 00 00 00 00 00 . . . 0x0200 03 03 00 00 00 00

  • 32.

    @github.com/leandromoreira LDX #$08 ;a2 08 decrement: DEX ; ca STX $0200 ; 8e 00 02 CPX #$03 ; e0 03 BNE decrement ; d0 f8 STX $0201 ; 8e 01 02 BRK ; 00 Var var1 = alloc(1) Var var2 = alloc(1) Var x = 8 while (x != 3) { x = x - 1 var1 = x } var2 = x

  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.

    @github.com/leandromoreira CPU.PC = 2Bwide (16 bits) = 2 ^ 16 - 1 = 65535 possible addresses RAM = 64KB ? Nope, it has 64K possible addresses but it only has 2K RAM NES has 64K addresses

  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.

    @github.com/leandromoreira ● https://wiki.nesdev.com/ ● https://taywee.github.io/NerdyNights/nerdynights/nesarchitecture.html ●https://www.youtube.com/channel/UC3azLjQuz9s5qk76KEXaTvA ● http://radar.spacebar.org/ ● http://skilldrick.github.io/easy6502/ ● https://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/s2009/ bhp7_teg25/bhp7_teg25/index.html ● https://forums.nesdev.com/viewtopic.php?f=10&t=15649 ● http://problemkaputt.de/everynes.htm ● https://www.youtube.com/watch?v=3BJU2drrtCM ● https://github.com/leandromoreira References