WRITTEN BY
buzzler

,
첫 공식 릴리즈합니다. 구글코드 사이트를 통해서 배포하고 있습니다.

as3nes에 대해서 간략하게 정리하자면..
플래시 플레이어에서 돌아가는 패미컴(또는 NES, 현대컴보이, 훼미리 등 여러 이름으로 불립니다) 에뮬레이터 라이브러리 입니다. 롬파일을 ByteArray로 넘겨주면 슥슥 에뮬레이팅 해주는 식이죠.

첫 릴리즈인 만큼 많이 부족합니다. 일단 FPS(Frame per Second)가 5미만이고, 그에따라 사운드도 매우 끊기고 듣기 힘든 수준입니다.
일단 구동이 된다는것에 만족해야 하는 수준이지만 당분간 퍼포먼스의 향상을 기대하기 어렵다는 판단을 하고 이 상태로 릴리즈를 결정했습니다.

(다른 프로젝트도 그렇지만 0.1버전 이후 업데이트는 엄청나게 느립니다. 후후)


(박스안에 담아둔 패미컴 게임들..)

WRITTEN BY
buzzler

,
NES의 시스템 아키텍쳐를 안보고 대강 vNES의 소스를 AS3로 직역한것에 불과하지만, 일단은 직역만으로도 구동되는 롬이 상당수.

이제 겨우 1단계가 마무리 되었으니 이제 자연스러운 문장으로 바꿀 단계다.

1단계에서는 이미지 출력이나 사운드 출력을 AS3에 맞게끔 바꾸는게 가장 큰 이슈였고,  java언어의 prime type들은 가장 호환성이 좋은 AS3의 prime type으로 대치하는것이 이슈였지만..

이번 단계에서 필요한건 AS3의 장점을 최대한 살릴수 있는 구조로 아키텍쳐를 변경하는것이다.

AS3에 가장 어울리는 문법과 표현법이 있는거니까.

예를들면.. 원 소스는 파일 입출력을 동기적으로 처리하였지만 AS3는 평소 비동기 입출력이 이용되는 것, Thread를 사용해서 각 Thread가 procedual 하게 처리하는것은 event 기반의 처리로 바꾸는식.
(추가1: event기반 구조로 바꿔본 결과 퍼포먼스가 눈에 띄게 떨어지는 현상. 아마도 event 객체 생성시 딜레이가 주 원인인듯하여 각 PPU, PAPU를 Thread로 처리해봐야겠음)
(추가2: Thread로도 해결되지 않는다. 병목을 찾아보니 Bitmap->Vector->calculation->Vector->Bitmap 이라는 방식에서 생기는 딜레이라고 판단된다. Tile이라 불리는 스프라이트와 프레임 버퍼를 Vector로 변환해서 계산하던걸 BitmapData상에서 모두 처리하는게 도움이 되지 않을까..PPU를 대대적으로 수정해야할것 같은 느낌)
(추가3: palette를 사용하는 indexed color를 사용하고 오브젝트의 색상이 고정적이지 않고 동적으로 팔레트를 교환하는 경우-마리오가 불꽃을 먹을때 마리오의 변신효과같은-가 있어서 BitmapData상에서 모두 처리하지 못하게 되어있다.결국 PPU의 리팩토링 실패로 성능개선의 한계에 왔음)

대신 빼서 버려야 할 것들도 상당수다. 화면의 크기를 조정한다던가, 화면 필터를 적용한다던가 하는 식의 클래스들은 불필요해졌다. AVM의 최대 강점인 벡터 렌더링 엔진이 하드웨어 가속까지 사용하면서 얼마든지 도와줄 수 있는 부분이니.
또한 pixel bender가 있으니 화면 필터는 plugin 방식으로 지원 가능한 부분.

'programming > as3nes' 카테고리의 다른 글

NES PPU 문서  (0) 2010.01.05
AS3NES v0.1 Alpha  (0) 2010.01.02
컨트롤러 입력 문제 해결후 슈퍼마리오 하는 모습  (0) 2009.12.28
Mapper 이식중.. (다량 스크린샷 추가)  (0) 2009.12.28
CPU , PPU 에뮬레이팅 성공  (0) 2009.12.27

WRITTEN BY
buzzler

,
하지만 열혈 응원단 마져 좌절할 만한 속도 또한 문제.
플래시에서 슈퍼 마리오의 음악을 듣게 되는 날도 그리 멀지 않은것 같습니다.

그리고 추가된 '플레이' 스크린샷. 어제 올렸던 구동화면과는 다른!
01234

WRITTEN BY
buzzler

,
각 맵퍼의 이식은 다 됐으나.. 정상동작하지 않는 스크린샷이다.
에뮬레이터 초반부터 너무 무리한 롬파일로 테스트를 하는건가..
PAPU 에뮬레이션까지 하고, 한꺼번에 디버깅해야지..

추가! 여러 롬파일로 테스트 결과.. 대부분 구동에 이상은 없다. 다만 조작에 이상이 있고, 느린 문제.
012345678910111213

WRITTEN BY
buzzler

,
에뮬레이팅에 있어서 큰산을 한번 넘었다.

NES(Nintendo Entertainment System)의 CPU와 PPU를 에뮬레이팅에 성공.

물론. 메뉴화면에서 데모화면으로 넘어간뒤로 진행이 되질않아 문제가 있는것같지만

차근히 들여다보면 해결될듯함. 남은 일들이...

Pseudo Thread하나를 추가해서 HiResTimer로 thread sleep시켜서 fps맞추는 작업..

(as3에선 Thread가 없어서 편법이용)

많은 Mapper들 지원하는것과 PAPU (사운드)를 에뮬레이팅하는게 남았고..

사운드까지 해결되고 시간이 남는다면

스크린 필터와, GameGenie 지원, 네트웍플레이를 지원할 예정.

이 프로젝트의 특징이라면 당연히 as3라는것. flex나 air뿐만 아니라 flash에서도 사용할 수 있도록했다.

사용환경은.. Flash Player 10 이상. 낮추고싶었지만 Vector를 써야하기 때문에 어쩔 수 없는 선택.

물론 불가능은 아니겠지만... (개발이 번거롭고, 에뮬레이션 속도가 느려지고, Vector가 써보고 싶었다)

ps: code.google.com를 통해서 배포하고 있었지만, 나한테 배포 권리가 없는 롬파일을 commit 해버리는 대실수를 저지르고 뒤늦게 해당 프로젝트를 폭파시켰음. 정식 명칭 정하고 다시 배포하는 날이 언젠가..

WRITTEN BY
buzzler

,
bottom-up 방식의 개발이 결과를 마지막에 봐야하는 단점때문에 의욕저하!

top-down방식으로 새로 포팅이 시작되었고

아직까지 순조롭게 포팅이 진행되곤 있지만...

indexed-color는 어찌 바꾸나..

'programming > as3nes' 카테고리의 다른 글

Mapper 이식중.. (다량 스크린샷 추가)  (0) 2009.12.28
CPU , PPU 에뮬레이팅 성공  (0) 2009.12.27
prime types conversion map Java to Actionscript 3  (0) 2009.12.13
Project 'NES'  (0) 2009.08.19
references for NES  (0) 2009.08.10

WRITTEN BY
buzzler

,
1. byte (8bits)
->int & 255
2. short (signed 16bits)
->int & 65535
3. int (signed 32bits)
->int
4. long (signed 64bits)
->Number (signed 53bits)*
5. float (32bits)
->Number (32bits)
6. double (64bits)
->Number (64bits)
7. char (16bits)
->int & 65535 | String
8. String
->String
9. Array
->Vector | Array**
10. boolean
->Boolean

'programming > as3nes' 카테고리의 다른 글

CPU , PPU 에뮬레이팅 성공  (0) 2009.12.27
as3nes 진행상황  (0) 2009.12.18
Project 'NES'  (0) 2009.08.19
references for NES  (0) 2009.08.10
Project 'NES'  (0) 2009.08.10

WRITTEN BY
buzzler

,

Project 'NES'

programming/as3nes 2009. 8. 19. 01:20
ByteBuffer , CpuInfo , Raster Classes was converted.

8.5% complete

'programming > as3nes' 카테고리의 다른 글

as3nes 진행상황  (0) 2009.12.18
prime types conversion map Java to Actionscript 3  (0) 2009.12.13
references for NES  (0) 2009.08.10
Project 'NES'  (0) 2009.08.10
Project 'NES' kickoff!!  (0) 2009.08.07

WRITTEN BY
buzzler

,

'programming > as3nes' 카테고리의 다른 글

as3nes 진행상황  (0) 2009.12.18
prime types conversion map Java to Actionscript 3  (0) 2009.12.13
Project 'NES'  (0) 2009.08.19
Project 'NES'  (0) 2009.08.10
Project 'NES' kickoff!!  (0) 2009.08.07

WRITTEN BY
buzzler

,