motofan logo
16 страниц V « < 8 9 10 11 12 > »         
> 

Учимся писать эльфов вместе, Обсуждение процесса кодинга

Andy51
сообщение 29.10.2007, 20:13 Закрепленное сообщение!


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Вот и долгожданное обновление SDK до v0.2

Основные новшества с прошлой версии:
+ Добавлено множество функций в SDK
+ Добавлено два новых примера - на этот раз GUI

Что внутри:
Папка SDK - ну, и так ясно, заголовочные файлы. За описаниями функций заглядываем в эту папку.

helloworld_snd - первый пример эльфа. Несколько нестандартный HelloWorld, заменяет озвучку цифровой клавиатуры системными звуками. Предназначен в основном для изучения структуры приложения (Application), ну и как пример приложения, работающего в фоне.

helloworld_gui - классический HelloWorld эльф, на этот раз с использованием GUI. Выводит сообщение с помощью диалога Notice. Предназначен для изучения структуры простейшего GUI-приложения.

ListTest - пример использования диалога List. Значительно более сложный пример, предназначен для изучения возможностей и принципов управления диалогами.

make_*.bat - батники для сборки эльфов-примеров. Эльфы расчитаны на компиляцию с комплектом ADS. Из-за правил форума, я не могу включить его в SDK, однако оставляю ссылки
http://ifolder.ru/3937671
http://slil.ru/25060171
http://rapidshare.com/files/67580866/ads.7z.html

Lib.o - для функционирования эльфа под моим загрузчиком, необходимо подлинковать этот файл к проекту (в make.bat уже прописан).
Внимание! Этот файл не зависит от конкретной версии прошивки, под которую собирается эльф, но, тем не менее, зависит от версии библиотеки!
В этом SDK уже включен Lib.o для библиотеки v071218 (оч. старый - не забудьте обновить, если понадобятся новые функции)

Пара слов об т.н. Application.
В телефонах motorola есть система AFW, которая позволяет, не затрачивая лишних ресурсов процессора на обеспечение "полноценной" многозадачности, достаточно полноценно работать нескольким приложениям, ориентированным на диалог с пользователем. Как это работает: приложения представляют собой, фактически, набор обработчиков событий(ивентов, events) + структура данных приложения. Откликаясь на те или иные события, приложения поочерёдно обрабатывают списки накопившихся ивентов. Таким образом, мы фактически имеем невытесняющую многозадачность.
Есть теоретическая возможность писать и эльфы, выделенные в отдельный процесс(task), но эта часть всё ещё в разработке.

Книги по Си
  1. Руководство полного идиота по программированию (на языке Си) - Не смотря на такое название все азы разжёваны. Если вы вообще никогда не видели Си, начните с этой книги
  2. Герберт Шилдт, "Полный справочник по С (4-е издание)"
    Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1153
  3. "Язык программирования C"
    Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 897
Исходники эльфов
  1. SRC by om2804
  2. SRC by G-XaD
SDK
  1. SDK by om2804
  2. SDK by G-XaD
Эльфостроение на motoWiki

Компилятор + исходники от om2804 для EP1 скачать

Сообщение отредактировал om2804 - 3.5.2011, 13:59
Прикрепленный файл SDKv02.rar   ( 24.88 килобайт ) Кол-во скачиваний: 2172
Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 897
Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1153
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 14.7.2009, 17:10


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



Цитата(lavmen @ 14.7.2009, 22:05) *

у тебя голый код непонятного содержания

ну почему же? это вполне рабочий код, просто его надо переделывать под мотор, а вот с этим могут быть проблемы

baat, я коды клавиш просто так копировал, всеравно придется по другому делать, а про код, там что было можно с минимальными изминениями перенести, я перенес, а остальное нужно переделывать.
я боюсь что если из main функцию из nes9~ вызвать , ребут будет
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 14.7.2009, 19:21


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



rock88, лучше всего, конечно, сделать эльф на отдельном таске. Но во-первых, это ещё не обкатано, а во-вторых, я полагаю, что с сименса переделать будет проще на моторольный application. И ты который из эмуляторов смотришь?
А ещё вот здесь http://www.pocketnes.org/ можно посмотреть на эмулятор для GBA. Полностью его портировать под мотор будет тяжело, но я уверен что что-нибудь полезное из его исходников извлечь можно.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 14.7.2009, 19:27


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



Цитата(Andy51 @ 14.7.2009, 22:21) *
А ещё вот здесь http://www.pocketnes.org/ можно посмотреть на эмулятор для GBA.

я их смотрел когда-то...ужесть... уверяю, что исходники rock88 из-под семёна проще будет переделать...

Ужесть - это твои исходники biggrin.gif А так мы заимеем как минимум полностью ассемблерное ядро процессора под ARM. A51

Сообщение отредактировал Andy51 - 14.7.2009, 20:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 15.7.2009, 4:07


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



Цитата(Andy51 @ 15.7.2009, 2:21) *

И ты который из эмуляторов смотришь?

NES 9x: The Portable Nintendo Entertainment System Emulator
=================================================================
1.0 Beta 20-FEB-2000
=================

Home page: www.emuhq.com/nes9x

порт этого эмуля на сименсы -Nes- от cbn'a
как утверждает сам автор, он тормозит, но у него хорошая совместимость с играми.

возможно что это не самый лучший выбор, но найти чтонибуть другое с открытым кодом и написанном на Си я не смог
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 15.7.2009, 6:37


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



rock88, удачи тебе с несом, и + за старания...

Сообщение отредактировал baat - 15.7.2009, 6:37
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 15.7.2009, 9:48


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



rock88, просто cbn портировал два эмулятора - один vnes с явы (быстрее), а второй - nes9x, который ты смотришь (больше совместимость). Но я могу сказать с большой степенью уверенности, что если взять ядро от PocketNES, выйдет лучше. Впрочем, основная нагрузка скорее всего будет на эмуляции PPU.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 15.7.2009, 10:40


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



baat, спасиб за +, но в одного мне этот эмуль не осилить, надеюсь на помощь эльфописцев/программистов smile.gif
Цитата(Andy51 @ 15.7.2009, 16:48) *

Но я могу сказать с большой степенью уверенности, что если взять ядро от PocketNES, выйдет лучше.

он же написан на ассемблере, как его куда там девать, я не понимаю
//
Техничекие характеристики Game Boy Advance:
CPU: 16 MHz 32 -bit RISC-CPU + 8-bit CISC-CPU
Memory: 32 KB WRAM + 96 KB VRAM + 256KB WRAM
Screen Size: 40.8 mm x 61.2 mm
Resolution: 240 x 160 pixels
Display Ability: 32 000 colours
Sound: Mono speakers, stereo headphones

я это к тому, что если брать ядро от PocketNES, думаю, придется менять адресацию памяти, но это не самое страшное из того, что предстоит сделать

ну и так, к слову
Техничекие характеристики Dendy NES / Famicon:
CPU: Motorola 6502 на 1.79MHz
Memory: 16 Kbit WRAM, 16 Kbit VRAM
Resolution:256x240
Display Ability: 52/16
Sound Processor

Сообщение отредактировал rock88 - 15.7.2009, 11:56
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dex9999
сообщение 15.7.2009, 12:03


Интересующийся
**

Группа: Пользователи
Сообщений: 67
Регистрация: 18.6.2005
Пользователь №: 44 478
Модель телефона: V500
Прошивка: V500->V620->E1 (R373_G_0E.30.45R)

Рейтинг: 14



Каким образом обрабатывать одновременное нажатие нескольких клавиш?

Желания поделиться навыками работы с экраном через ATIxxxx до выхода EP2 не появилось ни у кого? DAL_WriteDisplayRegion() не устраивает своей скоростью да и аппаратного ресайза хочется smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 15.7.2009, 13:49


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Dex9999, попробуй DL_KeyKjavaGetKeyState. У меня - желания нет...

rock88, что ты понимаешь под адресацией? И вообще, а знаешь ли ты, что в GBA использовано то же самое ядро процессора, что и в Нептуне? Это значит, что ассемблерный код на 100% совместим. Другое дело, что процессор GBA работает с памятью в Little Endian, что может вызвать проблемы с кодом, ориентированным на именно такую систему (работа со структураи, например).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 15.7.2009, 14:22


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



Цитата(Andy51 @ 15.7.2009, 20:49) *

что ты понимаешь под адресацией?

в исходниках PocketNES в memory.s есть функции такова вида:

Код

;----------------------------------------------------------------------------
ram_W;ram write ($0000-$1FFF)
;----------------------------------------------------------------------------
    bic addy,addy,#0x1f800    ;only 0x07FF is RAM
    strb r0,[cpu_zpage,addy]
    mov pc,lr
;----------------------------------------------------------------------------
sram_R;sram read ($6000-$7FFF)
;----------------------------------------------------------------------------
    sub r1,addy,#0x5800
    ldrb r0,[cpu_zpage,r1]
    mov pc,lr

то есть они считывают/записывают определенные данные из определенных блоков памяти и я сомневаюсь что адреса у этих блоков у GBA и у моторов одинаковы, хотя может быть я ошибаюсь и с этим не возникнет никаких проблем.

а каким образом "прикручивать" файлы *.s?
написал #include "6502.s" и получил море ошибок, или с ними нужно для начала что-то сделать?

там еще используются такие выражения
Код
IMPORT pcmctrl
EXPORT CPU_reset

компилятором тоже плохо воспринимаются
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 15.7.2009, 14:41


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



Цитата
а каким образом "прикручивать" файлы *.s?

через armasm попробуй объектник сделать

Цитата
там еще используются такие выражения

IMPORT pcmctrl
EXPORT CPU_reset

это для кода на асме. не для си

Цитата
;----------------------------------------------------------------------------
ram_W;ram write ($0000-$1FFF)
;----------------------------------------------------------------------------
bic addy,addy,#0x1f800 ;only 0x07FF is RAM
strb r0,[cpu_zpage,addy]
mov pc,lr
;----------------------------------------------------------------------------
sram_R;sram read ($6000-$7FFF)
;----------------------------------------------------------------------------
sub r1,addy,#0x5800
ldrb r0,[cpu_zpage,r1]
mov pc,lr


для этого кода важно только значение cpu_zpage. его можно поменять под нашу оперативку
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
R.U.S.H.A.N.
сообщение 15.7.2009, 19:37


Интересующийся
**

Группа: Разработчики
Сообщений: 95
Регистрация: 13.4.2009
Из: home://russia/ufa/
Пользователь №: 197 674
Модель телефона: Е398, Milestone, XT912
Прошивка: DaR_v2.15

Рейтинг: 231



Помогите, я пишу эльф графический Меню Пуск, почти все доделал, но происходят немонятные мне ребуты (то стабильно работает, то ваще не запускается - ребут) посмотрите пожалуйста исходики <br />может найдете какие нибудь ошибки. <br />выкладываю исходники и бинарники.

Сообщение отредактировал R.U.S.H.A.N. - 15.7.2009, 19:43
Прикрепленный файл Start_Menu_src_bin.zip   ( 40.81 килобайт ) Кол-во скачиваний: 69
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 15.7.2009, 20:05


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Ох... Dendy... Я как-то тоже хотел им занятся, даже накачал сорцев разных...
Вообщем лучше я с вами ссылками поделюсь, чем ностальгическими воспоминаниями детства.
Идем сюда http://ru.wikipedia.org/wiki/NES и видим всякие ссылочки внизу. Там много всякой инфы о архитектуре.
Идем сюда http://ru.wikipedia.org/wiki/Список_эмуляторов_NES и качаем опенсорц исходники, чтобы их читать
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 16.7.2009, 3:17


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



Цитата
через armasm попробуй объектник сделать

сделал батник
Код
armasm PocketNES998Src\6502.s
pause

на выходе получил 6502.o
а дальше его как использовать?
а, и еще armasm ругался на это:
Код
[ BUILD <> "DEBUG"
    ldrb r4,novblankwait
    teq r4,#1                ;NoVSync?
    beq l03
l01
    mov r0,#0                ;don't wait if not necessary
    mov r1,#1                ;VBL wait
    swi 0x040000            ; Turn of CPU until VBLIRQ if not too late allready.
    ldrb r0,PAL60            ;wait for AGB VBL
    cmp r0,#5
    beq l01
    teq r4,#2                ;Slomo?
    moveq r4,#0
    beq l01
l03
]

я взял и закоментировал, но без этой части кода наверное ничего не получится...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 16.7.2009, 3:56


МотоКодер
******

Группа: Разработчики
Сообщений: 786
Регистрация: 14.8.2006
Из: Архангельск
Пользователь №: 95 055
Модель телефона: E398
Прошивка: DaR
Победитель конкурса 2008

Рейтинг: 1650



R.U.S.H.A.N., где именно ребуты?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dex9999
сообщение 16.7.2009, 6:40


Интересующийся
**

Группа: Пользователи
Сообщений: 67
Регистрация: 18.6.2005
Пользователь №: 44 478
Модель телефона: V500
Прошивка: V500->V620->E1 (R373_G_0E.30.45R)

Рейтинг: 14



Цитата(Andy51 @ 15.7.2009, 17:49) *

попробуй DL_KeyKjavaGetKeyState

Код
typedef struct {
    UINT16         multikey_status;
    UINT16         multikey_keys;
} multikeys;

//Опрос клавиатуры
multikeys DL_KeyKjavaGetKeyState(void);

...

mkeys=DL_KeyKjavaGetKeyState();
dbg("status %i",mkeys.multikey_status);
dbg("keys %i",mkeys.multikey_keys);

Всё верно? Иногда проскакивают "левые" значения в логе и наложение по OR нескольких нажатых клавиш как-то нестабильно - то верно то только одна клавиша.

Сообщение отредактировал Dex9999 - 16.7.2009, 7:31
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 16.7.2009, 7:33


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



а нафига структура?? просто проверяй биты результата соответственно этим дефайнам.
CODE

#define MULTIKEY_0 0x00000001
#define MULTIKEY_1 0x00000002
#define MULTIKEY_2 0x00000004
#define MULTIKEY_3 0x00000008
#define MULTIKEY_4 0x00000010
#define MULTIKEY_5 0x00000020
#define MULTIKEY_6 0x00000040
#define MULTIKEY_7 0x00000080
#define MULTIKEY_8 0x00000100
#define MULTIKEY_9 0x00000200
#define MULTIKEY_STAR 0x00000400
#define MULTIKEY_POUND 0x00000800
#define MULTIKEY_SOFT_LEFT 0x00001000
#define MULTIKEY_SOFT_RIGHT 0x00002000
#define MULTIKEY_MENU 0x00004000
#define MULTIKEY_UP 0x00008000
#define MULTIKEY_DOWN 0x00010000
#define MULTIKEY_LEFT 0x00020000
#define MULTIKEY_RIGHT 0x00040000
#define MULTIKEY_JOY_OK 0x00080000

на L7e всё прекрасно опознается. но как видишь не все кнопки доступны.
а "нестабильно" т.к. клавиши нажимаются не одновременно и за время опроса может не успеть дожаться 2я кнопка. но можно объединить через OR несколько опросов. получится что-то вроде системы антидребезга.
заметь, DL_KeyKjavaGetKeyState чистит статус после вызова.

вот моя реализация:
CODE

UINT32 keys = 0, prev_keys = 0;

UINT32 CheckKeys( void )
{
UINT32 key = 0x00080000;

prev_keys = keys;
keys = DL_KeyKjavaGetKeyState();

while (key)
{
if ((prev_keys & key) != (keys & key))
{
if (keys & key) // key pressed
...
if (prev_keys & key) // key released
...
}
key >>= 1;
}

return RESULT_OK;
}


Сообщение отредактировал tim apple - 16.7.2009, 7:52
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
K-E-N-N-Y
сообщение 16.7.2009, 8:54


MotoCrazy^^
*****

Группа: Пользователи
Сообщений: 608
Регистрация: 9.4.2008
Из: Саратов
Пользователь №: 169 076
Модель телефона: Optimus P500
Прошивка: Android 2.2.1
Победитель конкурса 2008

Рейтинг: 533



om2804, либо при запуске,либо при выборе пункта и т.д.,раз на раз не приходится...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 16.7.2009, 8:54


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



Цитата(R.U.S.H.A.N. @ 15.7.2009, 22:37) *

Помогите, я пишу эльф графический Меню Пуск, почти все доделал, но происходят немонятные мне ребуты (то стабильно работает, то ваще не запускается - ребут)


думаю проблемы с LINE *item;

я бы LINE *item=NULL; внутрь функции впихнул,
в которой использовать буду... вместе с free(item); или с mfree лучше...

и item = (LINE*)malloc(sizeof(LINE)*(j+1));
на LINE *item = malloc(sizeof(LINE)*(j+1));
заменил бы...

хотя может я и не прав...


Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dex9999
сообщение 16.7.2009, 9:24


Интересующийся
**

Группа: Пользователи
Сообщений: 67
Регистрация: 18.6.2005
Пользователь №: 44 478
Модель телефона: V500
Прошивка: V500->V620->E1 (R373_G_0E.30.45R)

Рейтинг: 14



Структура потому как в IDA перед выходом из DL_KeyKjavaGetKeyState:
LDR R0,[multikey_kjava_status__12DL_KEYPAD_SP]
LDR R1,[multikey_kjava_current_keys__12DL_KEYPAD_SP] smile.gif
Ну да тут действительно UINT32 и всё. К дефейнам я сам пришел методом тыка по клавишам. Насчет нестабильно: дело в том что при нажатии на, к примеру, "9" может вернуть 512(что верно), 980 или 468. Вот я и удивлен откуда бы это.
код сейчас такой:
Код

UINT32 mkeys;
...
mkeys=0;
mkeys=DL_KeyKjavaGetKeyState();
dbg("status %i",mkeys);
Плюс к этому не все кнопки могут быть одновременно нажаты - центральная + любая распознаются как просто центральная. На джойстике распознаются диагональные нажатия но с цифровой клавиатурой вместе джой не "дружит".

Сообщение отредактировал Dex9999 - 16.7.2009, 9:27
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
R.U.S.H.A.N.
сообщение 16.7.2009, 17:08


Интересующийся
**

Группа: Разработчики
Сообщений: 95
Регистрация: 13.4.2009
Из: home://russia/ufa/
Пользователь №: 197 674
Модель телефона: Е398, Milestone, XT912
Прошивка: DaR_v2.15

Рейтинг: 231



baat, заменил строку
item = (LINE*)malloc(sizeof(LINE)*(j+1));
на LINE *item = malloc(sizeof(LINE)*(j+1));
И во че компилятор грит:
=================================================
"src\Start_Menu.c", line 524: Serious error: C2292E: typedef name 'LINE' used in
expression context
src\Start_Menu.c: 0 warnings, 0 errors, 1 serious error
=================================================
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 16.7.2009, 18:10


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



R.U.S.H.A.N., нельзя объявлять переменную в коде. по крайней мере в ADS. И нет разницы где ты влепиш маллок, в заголовке или в теле функции.

Добавлено позже (16.7.2009, 21:14):
И без разницы обнуляется перед освобождением памяти указатель или нет

Добавлено позже (16.7.2009, 21:20):
*имею ввиду после
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dex9999
сообщение 17.7.2009, 5:26


Интересующийся
**

Группа: Пользователи
Сообщений: 67
Регистрация: 18.6.2005
Пользователь №: 44 478
Модель телефона: V500
Прошивка: V500->V620->E1 (R373_G_0E.30.45R)

Рейтинг: 14



Может ли ADS компилировать Си-код с ассемблерными вставками? Если да то пример описания asm внутри Си и строку для компиляции пожалуйста.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 17.7.2009, 8:24


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



Dex9999,
Код

int foo( int x )
{
    int y;

    __asm
    {
        mov r0, x
        mov y, r0
    }

    return y;
}

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 17.7.2009, 9:44


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



Dex9999, выложил исходник эльфа Audio. Там смотри как работают asm вставки
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 18.7.2009, 5:34


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



я добавил 6502.о к библиотекам(там где lib.o подключается), который получил таким armasm PocketNES998Src\6502.s образом
и компилятор выдал такую ошибочку:
Fatal error: L6009U: File C:\Projects\PocketNES998_portformoto\obj\6502.o : Endianness mismatch.
вопрос: это значит что PocketNES998 от GBA не получится портануть или 6502.s как-то по другому нужно переделывать?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 18.7.2009, 6:33


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



rock88,
под моторы надо компилировать в armasm с ключами -32 -bi -apcs /interwork

Сообщение отредактировал tim apple - 18.7.2009, 6:33
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 26.7.2009, 7:54


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



решил повременить с Nes'ом и начать с чего нибуть полегче, нашел эмулятор на яве какого-то старова компа под названием CHIP8, уже все переделал под моторы, кроме кнопок и чего-то он не работает, не показывает ничего, возможно проблема в загрузке рома или еще где-то, надеюсь что ув. разработчики эльфов уделят пару минут и возможно найдут в чем там проблема.
прикрепляю исходники для моторов, для java и сам эмуль на яве, вот:
Прикрепленный файл motoCHIP8.rar   ( 124.09 килобайт ) Кол-во скачиваний: 130


когда запускаете на теле, нужно сначала нажать вверх, загорится зеленый экран, потом вниз, подождать - желтый экран, затем влево и игра по идеи должна пойти, но кроме черного экрана ничего не появляется

Сообщение отредактировал rock88 - 28.7.2009, 6:52
Прикрепленный файл motoCHIP8.rar   ( 124.09 килобайт ) Кол-во скачиваний: 130
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 26.7.2009, 9:19


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



эмуль даж на яве глючый что... bad.gif
rock88, половину кода закоментил и удивляется чего не работает, там отдельный поток на процесс, там часть эмуляции... проще найти инфу по эмулям и с нуля сделать, чем тупо переберать код не понимая его, во всяком случае мне бы проще было...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 26.7.2009, 18:11


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



по просьбе om2804 разобрался в работе с DateBook и вот выкладываю результаты:
  1. обновить time_date.h
    Код
    typedef UINT32 CLK_CLOCK_T;
  2. обновить events.h
    Код

    #define EV_DBK_ASYNC_OPERATION        0x8206A
    #define EV_DBK_ADD_EVENT            0x8206B
    #define EV_DBK_DATABASE_QUERY        0x8206C        // ответ на запрос
    #define EV_DBK_DATABASE_SLOT        0x8206D
    #define EV_DBK_DATABASE_ALTERED        0x8206E        // какие-то изменения в базе
    #define EV_DBK_DATABASE_ALARM        0x8206F        
    #define EV_DBK_NUM_OF_EVENTS        0x82070
    #define EV_DBK_DATABASE_IDLE        0x820D5        // база ничем не занята
    #define EV_DBK_WEEK_VIEW            0x82126        // ответ на запрос недельного вида
    #define EV_DBK_MONTH_VIEW            0x822CF        // ответ на запрос месячного вида
  3. добавить dbk.h в SDK
  4. пример эльфа - выводит все события на 24е число (требует порта под ЕР1)
    Прикрепленный файл DateBook.zip   ( 6.67 килобайт ) Кол-во скачиваний: 103
  5. еще пример - выводит все события ближайшего дня текущего месяца, в котором есть хоть одно событие
    Прикрепленный файл datebook2.zip   ( 4.79 килобайт ) Кол-во скачиваний: 108


Сообщение отредактировал tim apple - 27.7.2009, 14:56
Прикрепленный файл datebook2.zip   ( 4.79 килобайт ) Кол-во скачиваний: 108
Прикрепленный файл DateBook.zip   ( 6.67 килобайт ) Кол-во скачиваний: 103
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 26.7.2009, 19:45


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



tim apple, а можешь разобратся с поиском имени по номеру телефона?.. а то чтот у меня ребуты...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 26.7.2009, 19:54


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



baat,
гляну как время будет...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 27.7.2009, 15:16


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



rock88,
crazy.gif
лучше пиши свои игры. пиши в асю - описание функций дров я дам

Сообщение отредактировал lavmen - 27.7.2009, 15:16
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 16.8.2009, 13:23


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



вопрос такой появился: требуется нарисовать изображение попиксельно, размер 128*64
Код

int dscreen[128*64];

вот тут хранится "изображение", если 0 - не рисовать пиксель, 1 - рисовать, что-то типо {0,0,0,0,1,1,1,0... и т.д}
написал такую процедуру:
Код

UINT32 DISPLAY_paintEvent(void){
    int t = 0;
    int i,j;
    int x,y; //координаты
    AHIRECT_T  r={0,0,176,220};
    AHIRECT_T  rs={0,0,0,0};

    AhiDrawSurfDstSet( dCtx, sDraw, 0 );
    GRAPH_FillRect(&r, ATI_565RGB(0x00,0x00,0x00)); // рисует квадрат на ATI (взято из Lines)

    for (i = 0; i < 64; i++){
                    for (j = 0; j < 128; j++){
            t++;
            x=y=20;
            rs.x1=x+j;
            rs.y1=y+i;
            rs.x2=x+(1+j);
            rs.y2=y+(1+i);
                                          if (dscreen[t]==1){
                                               GRAPH_FillRect(&rs, ATI_565RGB(0xFF,0xFF,0xFF));// рисует белый пиксел
                        }
                   }
              }
    return RESULT_OK;
}

и не устраивает скорость, каким образом можно сделать побыстрее?
таймер стоит на 50 милисекунд, и бывает тел даже виснет sad.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 16.8.2009, 14:13


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



rock88,
как же ты жесток к своему телефону =)

вот так можно
Код

UINT8 dscreen[128*64];
UINT32 palette[2] = {0x0000, 0xFFFF};
....
AHIBITMAP_T            bmp;
AHIPOINT_T            pSrc;
AHIRECT_T            rDst;

bmp.width = 128;
bmp.height = 64;
bmp.image = (void*)dscreen;
bmp.stride = 128; // длина строки в байтах, обычно bmp.width*sizeof(PIXEL)
bmp.format = AHIFMT_8BPP;

pSrc.x = 0;
pSrc.y = 0;

rDst.x1 = x; // куда на экран
rDst.y1 = y; //
rDst.x2 = rDst.x1 + bmp.width;
rDst.y2 = rDst.y1 + bmp.height;

AhiDrawBitmapBlt( dCtx, &rDst, &pSrc, &bmp, palette, 0 );


обрати внимание на
Код
UINT8 dscreen[128*64];
UINT32 palette[2] = {0x0000, 0xFFFF};

т.е. пиксель занимает один байт. т.к. всего два цвета, то палитра из двух элементов.
если заполнишь палитру полностью (256 элементов), то можно выводить 256-цветные )

совет: лучше свой растр хранить в формате понятном АТИ. тогда без лишних перекодировок можно вывести.

Сообщение отредактировал tim apple - 16.8.2009, 14:54
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 16.8.2009, 14:55


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



Цитата(tim apple @ 16.8.2009, 21:13) *

тебя интересует способ вывода именно монохромной картинки ?

ага, даже можно сказать одноцветной - рисовать сначала черный квадрат, а на нем уже белые пикселы

Цитата(tim apple @ 16.8.2009, 21:13) *

как же ты жесток к своему телефону =)

можеш и свой помучить, если не жалко smile.gif
Прикрепленный файл CHIP8.zip   ( 14.04 килобайт ) Кол-во скачиваний: 95

после запуска нажать * потом #
изображение еще там мерцает, незнаю пока почему

tim apple, спасибо, попробую, а оно успеется меньше чем за 50 милисекунд рисовать?

Сообщение отредактировал rock88 - 16.8.2009, 14:58
Прикрепленный файл CHIP8.zip   ( 14.04 килобайт ) Кол-во скачиваний: 95
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 16.8.2009, 15:15


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



Цитата(rock88 @ Сегодня, 20:55)

оно успеется меньше чем за 50 милисекунд рисовать?
*


не знаю, замерь время. в лайнс есть код

ты с какой либой делаешь? на 6.4 от Умки рибут сразу. кстати, эльфы из твоей подписи рибутят тоже.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rock88
сообщение 16.8.2009, 15:31


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 26.6.2009
Из: г. Омск
Пользователь №: 201 900
Модель телефона: L9 & EM30
Прошивка: 05R & 04.06R

Рейтинг: 584



Цитата(tim apple @ 16.8.2009, 22:15) *

ты с какой либой делаешь? на 6.4 от Умки рибут сразу. кстати, эльфы из твоей подписи рибутят тоже.

либа 5.9, вроде самая первая, которая с ATI
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 16.8.2009, 17:30


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Цитата(tim apple @ Сегодня, 18:13)

т.е. пиксель занимает один байт. т.к. всего два цвета, то палитра из двух элементов.
*

А ещё круче - выводить монохромное изображение как есть, в 1bpp. Зачем использовать целый БАЙТ для хранения единички или нуля, если хватит одного БИТА? Оно и выводиться будет ещё быстрее, единственная проблема - заполнять однобитный массив труднее. Палитра из двух элементов - устанавливается в таком случае с помощью SetFg/BgColor.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 16.8.2009, 17:39


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



Цитата(Andy51 @ Сегодня, 23:30)

единственная проблема - заполнять однобитный массив труднее
*


потому и не стал даже упоминать. оно удобно лишь для шрифтов.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

16 страниц V « < 8 9 10 11 12 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19.7.2025, 15:24

Форум живёт: