{"id":19463846,"url":"https://github.com/kasworld/ppusim","last_synced_at":"2026-06-07T21:32:06.444Z","repository":{"id":195715460,"uuid":"693449548","full_name":"kasworld/ppusim","owner":"kasworld","description":null,"archived":false,"fork":false,"pushed_at":"2023-09-29T08:29:21.000Z","size":3894,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T03:13:09.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kasworld.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-19T03:56:47.000Z","updated_at":"2023-09-19T03:56:54.000Z","dependencies_parsed_at":"2023-09-25T05:13:59.853Z","dependency_job_id":"7a91cc25-1b03-43f8-b546-e32b4494ea36","html_url":"https://github.com/kasworld/ppusim","commit_stats":null,"previous_names":["kasworld/ppusim"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fppusim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fppusim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fppusim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fppusim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kasworld","download_url":"https://codeload.github.com/kasworld/ppusim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240674946,"owners_count":19839291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T18:12:26.621Z","updated_at":"2026-06-07T21:32:06.414Z","avatar_url":"https://github.com/kasworld.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pixel Processing Unit SIMulate\r\n\r\n## old 8 bit console style\r\n\r\nrgab r,g,b,a 각 8bit (a 는 미사용) \r\n\r\npalette : 256 개 의 sub palette 로 구성 \r\n\r\n    file로 읽고 쓸때는 256x256xRGBA bmp 를 사용\r\n\r\nsub palette : 256 개의 rgba  \r\n\r\ntile : 8 x 8 크기, 각 구성 요소는 sub palette index (8bit 크기) 를 가진다.  \r\n\r\ntile_vec : tile의 목록,  256 page 의 256 tile \r\n\r\n    file로 읽고 쓸때는 2048x2048 256gray bmp사용 \r\n    각 페이지는 16x16 구역으로 나뉘어 진다. \r\n\r\ntilemap : sprite나 background image 를 구성하기 위한 정보를 담고있다. \r\n\r\n    x,t : 좌표 : (signed 16bit)x2  \r\n    w,h : 크기 : (unsigned 8bit)x2 가로 세로 타일 수  \r\n    scale x,y : 확대 x,y \r\n    flip x,y : 좌우 상하 반전 \r\n    upper_palette_index : 사용할 palette page 8bit, 여러 tilemap 이 palette를 공유가능하다.\r\n    upper_tilevec_index : 사용할 tile_vec page 8bit, 여러 tilemap 이 tile_vec page를 공유가능하다.\r\n    tilemap_buffer_index : tilemap buffer 에서 사용할 타일 목록 시작 지점 \r\n        크기(wh) 만큼의 tile을 사용한다. \r\n    enable : on/off\r\n\r\n    아래 필드는 속도를 위해 get_at_dst_unchecked 부르기전 is_in_dst 를 통해 계산되는 필드다.\r\n    px_w: isize, 픽셀 단위 크기 \r\n    px_h: isize,\r\n    scaled_w: isize, 스케일을 포함한 크기 \r\n    scaled_h: isize,\r\n    end_x: isize, tilemap의 마지막 위치\r\n    end_y: isize,\r\n\r\ntilemap_vec : tilemap의 목록 : 이것을 사용해서 화면을 그린다. \r\n\r\ntilemap_buffer : tilemap에서 사용할 tile 번호들의 목록 \r\n\r\n    tilemap 의 tilemap_buffer_index 에서 시작애서  크기(wh)만큼을 사용한다. \r\n    각 tilemap에서 사용하는 tile 은 서로 겹칠 수 있다. \r\n    ( 같은 tilemap_buffer 공간을 공유 가능, 따라서 tile도 공유가능 ) \r\n    tilemap의 upper_tilevec_index  와 여기의 tile index 를 사용해서 tile_vec의 위치를 찾는다. \r\n\r\ntilesdef.bmp 는 \r\nhttps://opengameart.org/content/dungeon-crawl-32x32-tiles\r\n에서 가져온 것 이다. \r\n\r\nsample data file\r\n\r\n![image](palette.bmp)\r\n\r\n![image](tilesdef.bmp)\r\n\r\n![image](ppu.bmp)\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasworld%2Fppusim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasworld%2Fppusim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasworld%2Fppusim/lists"}