Menu
Home
Home / Links / Resume
Photo
Photo
BBS
Writing / Programming
Salsa / Guestbook
Wiki
Home / NDS HomeBrew

Search

Calendar 2017/11
< 2017 / 11 >
  1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

Calendar 2017/12
< 2017 / 12 >
  1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Recent Comments
* gkagm2@gmail.com 이...
*
* jkj,k
*
*
* Test
*
*
*
* 승익
*
* 일본어글자앱이요 껏...
* 죄송
* 닥쳐
*

Get XML
Articles RSS
Photos RSS
Wiki New Pages
Wiki Changes

Counter
Today: 123
Month: 1434
Total: 632544
Statistics

Programming
Board: Programming (19 Articles) Page 2 / 4 pages.



14. [Programming] by GyonG at 2007-03-24 01:32:50 from 211.109.216.248
어제 말썽인 컴퓨터 덕분에 못 한 것을 마저 해 본다.

template/arm9 를 testprj 로 복사하여 빌드하는 것이 성공했으니 Emulator 로 먼저 돌려 보기로 한다.

http://www.dev-scene.com/NDS/Tutorials 에서는 Emulator Section 에서 다음과 같은 얘기를 한다.

Dualis http://dualis.1emulation.com/
NO$GBA http://nocash.emubase.de/gba.htm

Dualis is free and slightly more advanced than NO$GBA. But the $15 homebrew version of NO$GBA has some very impressive and incredibly useful debugging features. I recommend you grab Dualis and if you get serious about homebrew you can grab NO$GBA another time.

얼마나 serious 해질지는 모르지만 NO$GBA 를 받아 보기로 한다. 받아서 실행하니 바로 ROM 파일을 묻는다. 방금 컴파일 한 testprj.nds 를 선택해 주니 touch 의 x,y 를 잘 찍어 준다. 예상한 대로, Emulator 에서는 mouse button 을 누르는 것이 touch 이다. 그런데, 아직 키는 뭔지 모르겠다.

내친김에 어둠의 세계에서 다운로드받은 롬도 돌려본다. 실행은 되는데, 세이브 파일이 없다는 에러 메시지가 나온다. 일단은 관심사가 아니니 패스.

Tutorial 에 있는 내용으로 바꿔서 돌려 보니 역시 잘 나오는 것 같다.

뭘 만들어 볼까. 고민 하다가 그냥 간단히 Block 격파 프로그램을 짜 보기로 한다.
Name: Comment:

13. [Programming] by GyonG at 2007-03-22 22:06:57 from 211.109.216.248
Nintendo DS 용 Application 개발을 위한 자료들.

개발툴, DevKitPro 를 Download 받았다.
http://www.devkitpro.org/

개발 Tutorial 을 찾아 본다. "NDS homebrew tutorial" 로 검색하니 Google 에서는 http://www.double.co.nz/nintendo_ds/ 를 찾아 준다. 이것도 잘 설명한 사이트인 것 같다.

Wikipedia 에서는 http://www.dev-scene.com/NDS/Tutorials 를 추천한다. 역시 깔끔하게 정리되어 있군. 이 Tutorial 을 따라 하기로 한다.

DevKitPro 에 들어 있는 Programmers Notepad 2 를 실행시킨다. 깔끔하니 잘 만든 IDE 인 것 같아 보인다.

Project 를 열어야 하니 하나 복사해 보자. DevKitPro 가 설치한 Shortcut 중 MSys 라는 것을 실행시킨다. cygwin 과 비슷하지만 mingw32 를 쓴 거란다. sample 을 복사한다.

scgyong@GPC ~/ndsdev
$ cp -R /c/Apps/devkitPro/examples/nds/templates/arm9 testprj

Programmers Notepad 2 로 만든 프로젝트를 열어본다.
C:/Apps/devkitPro/msys/home/scgyong/ndsdev/testprj/template.pnproj
가 project 파일이다.

Menu - Tools - make 를 무작정 실행해 본다. 컴파일이 실패한다. arm-eabi-gcc 가 제대로 실행이 안 되는 듯하다. 이번엔 msys 에서 command line 으로 실행해 봤는데 이번엔 command not found 가 나온다.

우째야 하는 걸까.

고민을 좀 하다가 에러 메시지로 검색을 해 보니
http://support.microsoft.com/kb/884538
이런 글이 나온다. VC2003 이 문제인가. MSVCRT.DLL 이나 MSVCIRT.DLL 을 어디선가 다운로드하여 교체해 보았지만 소용이 없다.

아. 뭐가 문제일까.

컴퓨터가 얼마전에 바이러스도 걸리고 뭔가 지저분한 느낌인데 포맷이나 해야겠다 -_-
GyonG : 아아.. XP 새로 깔고 하니 된다 -_- ( 03.23 03:07 211.109.216.248 )
Name: Comment:

12. [Programming] by GyonG at 2006-08-24 22:29:06 from 125.7.201.154
JavaScript 가지고 놀기 - English Premiere Leage

홈페이지 개편을 언제 하게 될지는 잘 모르지만, 그동안 가지고 놀던 JavaScript 복습도 할 겸 잉글랜드 프리미어리그 경기일정 가지고 장난을 쳐 봤다.

EPL Schedule
GyonG : 크기는 약 20여K. epl.html(544) epl_sched.js(22K) epl_view.js(2.5K) ( 08.25 09:49 125.7.201.154 )
Name: Comment:

11. [Programming] by GyonG at 2006-07-28 11:50:12 from 125.7.201.154
Final MarbleMover Source Code

I Completely refactored the control structure after the exercise time

' {$STAMP BS2}
' {$PORT COM1}

I VAR Byte

WAIT_INTERVAL_MSEC  CON 250
WAIT_ALARM_COUNT    CON  70
WAIT_TIMEOUT_COUNT  CON 100

timer    VAR Word
buttonOn VAR Bit
ledOn    VAR Bit
soundOn  VAR Bit

leftOn   VAR Bit
rightOn  VAR Bit
centerOn VAR Bit

PAUSE_MSEC_BEFORE_TURN CON 100
PAUSE_MSEC_AFTER_TURN  CON 300

isSecondForward VAR Bit

SOUNDPORT CON 8
SOUNDMSEC CON 200
SOUNDFREQ CON 880

DIR3 = 1 'Port 3 is for output (LED)

L_WAIT:
 DEBUG "[STEP: WAIT]", CR
 isSecondForward = 0
 timer = 0
 L_WAIT_LOOP:
  timer = timer + 1
  IF timer // 10 <> 0 THEN L_WAIT_AFTER_DISPLAY_TIME
   DEBUG " Waiting Timer: ", DEC timer, CR
  L_WAIT_AFTER_DISPLAY_TIME:
  buttonOn = IN4
  IF buttonOn = 0 THEN L_WAIT_AFTER_BUTTON_CHECK
   timer = 0
  L_WAIT_AFTER_BUTTON_CHECK:
  PAUSE WAIT_TIMEOUT_COUNT
  IF timer = WAIT_TIMEOUT_COUNT THEN L_WAIT_TIMEOUT
  IF timer >= WAIT_ALARM_COUNT THEN L_WAIT_ALARM
  GOTO L_WAIT_LOOP

 L_WAIT_ALARM:
  'DEBUG " - timer on ALARM: ", DEC timer, CR
  IF timer // 5 <> 1 THEN L_WAIT_LOOP
  IF timer // 10 <> 1 THEN L_WAIT_ALARM1
   'GOSUB SOUND_ON
   FREQOUT SOUNDPORT, SOUNDMSEC, SOUNDFREQ
   DEBUG "SOUND ON", CR
   soundOn = 1
   GOTO L_WAIT_LOOP
  L_WAIT_ALARM1:
   'GOSUB SOUND_OFF
   DEBUG "SOUND OFF", CR
   soundOn = 0
  GOTO L_WAIT_LOOP

 L_WAIT_TIMEOUT:
  IF soundOn = 0 THEN L_WAIT_TIMEOUT_1
   DEBUG "SOUND_OFF", CR
   soundOn = 0
  L_WAIT_TIMEOUT_1:

  GOTO L_FORWARD

FORWARD_INTERVAL_MSEC CON 25

L_FORWARD:
 DEBUG "[STEP: FORWARD]", CR
 timer = 0
 L_FORWARD_LOOP:
  timer = timer + 1
  IF timer // 10 = 0 THEN L_FORWARD_AFTER_CHECK_WHISKERS
   GOSUB CHECK_WHISKERS
   IF leftOn = 0 THEN L_FORWARD_L
    GOSUB TURN_LED_OFF
    GOSUB MOTOR_CORRECT_RIGHT
   L_FORWARD_L: IF rightOn = 0 THEN L_FORWARD_R
    GOSUB TURN_LED_OFF
    GOSUB MOTOR_CORRECT_LEFT
   L_FORWARD_R: IF centerOn = 0 THEN L_FORWARD_C
    GOSUB TURN_LED_OFF
    PAUSE PAUSE_MSEC_BEFORE_TURN
    GOSUB MOTOR_TURN_LEFT_90_DEGREE
    IF isSecondForward = 1 THEN L_WAIT
     PAUSE PAUSE_MSEC_AFTER_TURN
     isSecondForward = 1
   L_FORWARD_C:
  L_FORWARD_AFTER_CHECK_WHISKERS:
  IF timer // 20 <> 0 THEN L_FORWARD_AFTER_BLINKING
   IF timer // 40 = 0 THEN L_FORWARD_LED
    DEBUG "LED ON", CR
    OUT3 = 1
    ledOn = 1
    GOTO L_FORWARD_AFTER_BLINKING
   L_FORWARD_LED:
    DEBUG "LED OFF", CR
    OUT3 = 0
    ledOn = 0
  L_FORWARD_AFTER_BLINKING
  GOSUB MOTOR_MOVE_FORWARD_TICK
  PAUSE FORWARD_INTERVAL_MSEC
 GOTO L_FORWARD_LOOP

CHECK_WHISKERS:
 leftOn = IN0
 centerOn = IN1
 rightOn = IN2
 RETURN_CHECK_WHISKERS:
RETURN

TURN_LED_OFF:
 IF ledOn = 0 THEN RETURN_OFF_LED
    DEBUG "LED OFF", CR
    OUT3 = 0
    ledOn = 0
 RETURN_OFF_LED:
RETURN

FULL_CCW     CON    850    'Full on, counter clockwise
FULL_CW      CON    650    'Full on, clockwise
LEFT_MOTOR   CON     12    'Servo connection
RIGHT_MOTOR  CON     13    'Servo connection

CORRECTION_PULSE_COUNT  CON   2
LEFTTURN_PULSE_COUNT    CON  10
BACKWARD_PULSE_COUNT    CON   3

PAUSE_MSEC_FOR_MOTOR          CON  25
PAUSE_MSEC_BEFORE_MOVING_BACK CON 200
PAUSE_MSEC_AFTER_MOVING_BACK  CON 200

MOTOR_CORRECT_LEFT:
 GOSUB MOTOR_MOVE_BACKWARD_A_LITTLE
 DEBUG "[STEP: CORRECTING LEFT]", CR
 FOR I = 1 TO CORRECTION_PULSE_COUNT
  PULSOUT LEFT_MOTOR,  FULL_CW
  PULSOUT RIGHT_MOTOR, FULL_CW
  PAUSE PAUSE_MSEC_FOR_MOTOR
 NEXT
RETURN

MOTOR_CORRECT_RIGHT:
 GOSUB MOTOR_MOVE_BACKWARD_A_LITTLE
 DEBUG "[STEP: CORRECTING RIGHT]", CR
 FOR I = 1 TO CORRECTION_PULSE_COUNT
  PULSOUT LEFT_MOTOR,  FULL_CCW
  PULSOUT RIGHT_MOTOR, FULL_CCW
  PAUSE PAUSE_MSEC_FOR_MOTOR
 NEXT
RETURN

MOTOR_TURN_LEFT_90_DEGREE:
 GOSUB MOTOR_MOVE_BACKWARD_A_LITTLE
 DEBUG "[STEP: TURN LEFT]", CR
 FOR I = 1 TO LEFTTURN_PULSE_COUNT
  DEBUG " - Debug / Left Turn: ", DEC I, CR
  PULSOUT LEFT_MOTOR,  FULL_CW
  PULSOUT RIGHT_MOTOR, FULL_CW
  PAUSE PAUSE_MSEC_FOR_MOTOR
 NEXT
RETURN

MOTOR_MOVE_FORWARD_TICK:
  PULSOUT LEFT_MOTOR,  FULL_CCW
  PULSOUT RIGHT_MOTOR, FULL_CW
RETURN

MOTOR_MOVE_BACKWARD_A_LITTLE:
 DEBUG "[STEP: Moving backward a little]", CR
 PAUSE PAUSE_MSEC_BEFORE_MOVING_BACK
 FOR I = 1 TO BACKWARD_PULSE_COUNT
  PULSOUT LEFT_MOTOR,  FULL_CW
  PULSOUT RIGHT_MOTOR, FULL_CCW
  PAUSE PAUSE_MSEC_FOR_MOTOR
 NEXT
 PAUSE PAUSE_MSEC_AFTER_MOVING_BACK
RETURN
END
Name: Comment:

10. [Programming] by GyonG at 2006-06-07 14:59:21 from 125.7.201.154
AJAX 에 빠지다.

AJAX 는 영어로는 "에이잭스" 라고도 읽는 모양인데, 나는 "아약스" 라고 읽는다. 박지성, 이영표가 PSV 아인트호벤에서 열심히 선수 생활을 할 무렵 MBC ESPN 에서 해 주는 경기를 열심히(사실 몇 번 안봤음) 본 나로서는 PSV 의 맞수 아약스를 먼저 떠올리게 된다. 그러다가 얼마 전에 이 개념을 접한 뒤에 대충의 개념만 듣고 있다가, 준원이가 이 책을 사서 가지고 있길래 몰래 훔쳐봤다.

그런데 정말 놀라지 않을 수가 없었다. 어떻게 저런 내용으로 책을 쓰고, 만팔천원이나 받을 수가 있는 거지? HttpRequest 비슷한 클래스를 만들고, 그 클래스의 spec 은 다음과 같다.. 정도가 이 책 내용의 전부인 듯하다.

한 chapter 거리도 안 되는 정보로 책을 쓰고, 예쁘게 꾸미고, 잘 팔리게 하는 것도 능력이란 생각이 든다.
Name: Comment:

Go To Page [ 1 2 3 4 ]